Command-line interface for Muban Document Generation Service
Project description
Muban CLI
A robust command-line interface for the Muban Document Generation Service. Manage JasperReports templates and generate documents directly from your terminal.
Features
- Secure Authentication - JWT token-based auth with credential login
- Template Management - List, upload, download, and delete templates
- Document Generation - Generate PDF, XLSX, DOCX, RTF, and HTML documents
- Search & Filter - Search templates and filter audit logs
- Audit & Monitoring - Access audit logs and security dashboards (admin)
- Automation Ready - Perfect for CI/CD pipelines and scripting
- Cross-Platform - Works on Windows, macOS, and Linux
Installation
From PyPI (Recommended)
pip install muban-cli
From Source
git clone https://github.com/muban/muban-cli.git
cd muban-cli
pip install -e .
Development Installation
pip install -e ".[dev]"
Quick Start
1. Configure the Server
# Interactive setup
muban configure
# Or with command-line options
muban configure --server https://api.muban.me
2. Login with Your Credentials
# Interactive login (prompts for username/password)
muban login
# Or with command-line options
muban login --username your@email.com
3. List Available Templates
muban list
4. Generate a Document
muban generate TEMPLATE_ID -p title="Monthly Report" -p date="2025-01-08"
Configuration
Configuration File
Configuration is stored in ~/.muban/config.json. JWT tokens are stored separately in ~/.muban/credentials.json with restricted permissions.
Environment Variables
| Variable | Description |
|---|---|
MUBAN_TOKEN |
JWT Bearer token (obtained via muban login) |
MUBAN_SERVER_URL |
API server URL (default: https://api.muban.me) |
MUBAN_AUTH_SERVER_URL |
Auth server URL (if different from API server) |
MUBAN_TIMEOUT |
Request timeout in seconds |
MUBAN_VERIFY_SSL |
Enable/disable SSL verification |
MUBAN_CONFIG_DIR |
Custom configuration directory |
Environment variables take precedence over configuration files.
Commands Reference
Authentication
# Login with credentials (interactive)
muban login
# Login with username provided
muban login --username admin@example.com
# Login with custom server
muban login --server https://api.muban.me
# Check authentication status (shows token expiry)
muban whoami
# Manually refresh access token
muban refresh
# Logout (clear all tokens)
muban logout
Token Refresh:
- If the server provides a refresh token, it's automatically stored
- The CLI automatically refreshes expired tokens when making API requests
- Use
muban refreshto manually refresh before expiration - Use
muban whoamito see token expiration time
Configuration Commands
# Interactive configuration
muban configure
# Set server URL
muban configure --server https://api.muban.me
# Set auth server (if different from API server)
muban configure --auth-server https://auth.muban.me
# Show current configuration
muban configure --show
# Clear all configuration
muban config-clear
Template Management
# List all templates
muban list
muban list --search "invoice" --format json
muban list --page 2 --size 50
# Search templates
muban search "quarterly report"
# Get template details
muban get TEMPLATE_ID
muban get TEMPLATE_ID --params # Show parameters
muban get TEMPLATE_ID --fields # Show fields
# Upload a template (ZIP format)
muban push report.zip --name "Monthly Report" --author "John Doe"
muban push invoice.zip -n "Invoice" -a "Finance Team" -m "Standard invoice template"
# Download a template
muban pull TEMPLATE_ID
muban pull TEMPLATE_ID -o ./templates/report.zip
# Delete a template
muban delete TEMPLATE_ID
muban delete TEMPLATE_ID --yes # Skip confirmation
Document Generation
# Basic generation
muban generate TEMPLATE_ID -p title="Sales Report"
# Multiple parameters
muban generate TEMPLATE_ID -p title="Report" -p year=2025 -p amount=15750.25
# Different output formats
muban generate TEMPLATE_ID -F xlsx -o report.xlsx
muban generate TEMPLATE_ID -F docx -o report.docx
muban generate TEMPLATE_ID -F html -o report.html
# Using parameter file
muban generate TEMPLATE_ID --params-file params.json
# Using JSON data source
muban generate TEMPLATE_ID --data-file data.json
# PDF options
muban generate TEMPLATE_ID --pdf-pdfa PDF/A-1b --locale pl_PL
muban generate TEMPLATE_ID --pdf-password secret123
# Output options
muban generate TEMPLATE_ID -o ./output/report.pdf --filename "Sales_Report_Q4"
Parameter File Format (params.json):
{
"title": "Monthly Sales Report",
"year": 2025,
"department": "Finance"
}
Or as a list:
[
{"name": "title", "value": "Monthly Sales Report"},
{"name": "year", "value": 2025}
]
Data Source File Format (data.json):
{
"items": [
{"productName": "Widget A", "quantity": 100, "unitPrice": 25.50},
{"productName": "Widget B", "quantity": 50, "unitPrice": 45.00}
],
"summary": {
"totalItems": 150,
"totalValue": 4800.00
}
}
Utility Commands
# List available fonts
muban fonts
# List ICC color profiles (for PDF export)
muban icc-profiles
Admin Commands
# Verify template integrity
muban admin verify-integrity TEMPLATE_ID
# Regenerate integrity digest
muban admin regenerate-digest TEMPLATE_ID
# Regenerate all digests
muban admin regenerate-all-digests --yes
# Get server configuration
muban admin server-config
Audit Commands
# View audit logs
muban audit logs
muban audit logs --severity HIGH --since 1d
muban audit logs --event-type LOGIN_FAILURE --format json
# Get audit statistics
muban audit statistics --since 7d
# View security events
muban audit security --since 24h
# Dashboard and monitoring
muban audit dashboard
muban audit threats
muban audit health
# List available event types
muban audit event-types
# Trigger cleanup
muban audit cleanup --yes
Common Options
All commands support these options:
| Option | Short | Description |
|---|---|---|
--verbose |
-v |
Enable verbose output |
--quiet |
-q |
Suppress non-essential output |
--format |
-f |
Output format (table, json) |
--help |
Show help message |
CI/CD Integration
GitHub Actions Example
name: Deploy Report Template
on:
push:
branches: [main]
paths:
- 'templates/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Install Muban CLI
run: pip install muban-cli
- name: Deploy Template
env:
MUBAN_TOKEN: ${{ secrets.MUBAN_TOKEN }}
MUBAN_SERVER_URL: https://api.muban.me
run: |
cd templates
zip -r report.zip ./monthly_report/
muban push report.zip --name "Monthly Report" --author "CI/CD"
GitLab CI Example
deploy_template:
image: python:3.9-slim
stage: deploy
only:
changes:
- templates/**
script:
- pip install muban-cli
- cd templates && zip -r report.zip ./monthly_report/
- muban push report.zip --name "Monthly Report" --author "GitLab CI"
variables:
MUBAN_TOKEN: $MUBAN_TOKEN
MUBAN_SERVER_URL: https://api.muban.me
Shell Script Example
#!/bin/bash
# deploy-template.sh
set -e
TEMPLATE_DIR="./my_jasper_project"
TEMPLATE_NAME="Monthly Sales Report"
AUTHOR="Deploy Script"
# Create ZIP archive
zip -r template.zip "$TEMPLATE_DIR"
# Upload to Muban
muban push template.zip \
--name "$TEMPLATE_NAME" \
--author "$AUTHOR" \
--metadata "Deployed from commit ${GIT_COMMIT:-unknown}"
# Cleanup
rm template.zip
echo "Template deployed successfully!"
Error Handling
The CLI provides detailed error messages and appropriate exit codes:
| Exit Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 130 | Interrupted (Ctrl+C) |
Common Errors
# Not configured
$ muban list
✗ Muban CLI is not configured.
Run 'muban configure' to set up your server, then 'muban login'.
# Not authenticated
$ muban list
✗ Not authenticated. Run 'muban login' to sign in.
# Template not found
$ muban get invalid-id
✗ Template not found: invalid-id
# Permission denied
$ muban delete some-template
✗ Permission denied. Manager role required.
Development
Running Tests
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=muban_cli --cov-report=html
Code Quality
# Format code
black muban_cli
isort muban_cli
# Type checking
mypy muban_cli
# Linting
flake8 muban_cli
Project Structure
muban-cli/
├── muban_cli/
│ ├── __init__.py # Package initialization
│ ├── cli.py # CLI commands (Click)
│ ├── api.py # REST API client
│ ├── config.py # Configuration management
│ ├── utils.py # Utility functions
│ ├── exceptions.py # Custom exceptions
│ └── py.typed # PEP 561 marker
├── tests/ # Test suite
├── pyproject.toml # Project configuration
└── README.md # Documentation
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
- Email: contact@muban.me
- Documentation: https://muban.me/features.html
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file muban_cli-1.0.1.tar.gz.
File metadata
- Download URL: muban_cli-1.0.1.tar.gz
- Upload date:
- Size: 57.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e221ee33f64e9ab0e6cedf365b80435ef2ef7e05d5366a972b5ea57989172913
|
|
| MD5 |
552121f0a0b185494bc186b6261b2d12
|
|
| BLAKE2b-256 |
b4e35815e1d13daf5c95185c28e6e229600cbc6b8e08ce5b8f28d1a261cdcd32
|
File details
Details for the file muban_cli-1.0.1-py3-none-any.whl.
File metadata
- Download URL: muban_cli-1.0.1-py3-none-any.whl
- Upload date:
- Size: 44.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4db48d492d901361ac7ee2e34bc60a640de37617b81fd2a37912138017968116
|
|
| MD5 |
2a91e58053cd54e386ebe5aebc1d52ae
|
|
| BLAKE2b-256 |
3c7e98fbba89ef41a71830632744846044d9f02ea9a02768d60fc769cbd74187
|