名称: frappecli
版本: 0.1.0
描述: 用于 Frappe Framework / ERPNext 实例的命令行工具。当用户询问“Frappe”、“ERPNext”、“DocType”、“Frappe API”,或需要管理文档、文件、报告,或在 Frappe 站点上调用 RPC 方法时使用。
tools: [bash]
通过 REST API 管理 Frappe Framework 实例的命令行工具。
brew tap pasogott/tap
brew install frappecli
或从源码安装:
git clone https://github.com/pasogott/frappecli.git
cd frappecli && uv sync && uv pip install -e .
创建配置文件 ~/.config/frappecli/config.yaml:
sites:
production:
url: https://erp.company.com
api_key: your_api_key
api_secret: your_api_secret
staging:
url: https://staging.company.com
api_key: your_staging_key
api_secret: your_staging_secret
default_site: production
frappecli site doctypes # 列出所有 DocType
frappecli site doctypes --module "Core" # 按模块筛选
frappecli site info "User" # 获取 DocType 详情
# 列出文档
frappecli doc list Customer
frappecli doc list Customer --filters '{"status":"Active"}' --limit 10
# 获取单个文档
frappecli doc get Customer CUST-001
frappecli doc get Customer CUST-001 --fields name,customer_name,status
# 创建文档
frappecli doc create Customer --data '{"customer_name":"Acme","customer_type":"Company"}'
# 更新文档
frappecli doc update Customer CUST-001 --data '{"status":"Inactive"}'
# 删除文档
frappecli doc delete Customer CUST-001
# 上传文件(默认私有)
frappecli file upload invoice.pdf --doctype "Sales Invoice" --docname "INV-001"
# 上传公开文件
frappecli file upload logo.png --public
# 下载文件
frappecli file download /private/files/invoice.pdf -o ./downloads/
# 列出文档关联的文件
frappecli file list --doctype "Sales Invoice" --docname "INV-001"
# 运行报告(JSON 输出)
frappecli report run "General Ledger" --filters '{"company":"My Company"}'
# 导出为 CSV
frappecli report run "Accounts Receivable" --format csv -o report.csv
# 调用自定义方法
frappecli rpc frappe.ping
# 带参数调用
frappecli rpc myapp.api.process_data --args '{"doc_id":"DOC-001"}'
# 使用指定站点
frappecli --site staging doc list Customer
# 切换默认站点
frappecli config set default_site staging
frappecli doc list Customer --format table # 美观表格(默认)
frappecli doc list Customer --format json # JSON
frappecli doc list Customer --format csv # CSV
# 导出所有活跃客户
frappecli doc list Customer --filters '{"status":"Active"}' --format csv > customers.csv
# 获取包含子表的文档
frappecli doc get "Sales Invoice" INV-001 --fields '*'
# 仅获取客户名称
frappecli doc list Customer --format json | jq -r '.[].customer_name'
# 按状态计数
frappecli doc list Customer --format json | jq 'group_by(.status) | map({status: .[0].status, count: length})'
brew install pasogott/tap/frappecli