Skip to content

feat(de-cli): DualEntry CLI v1#1

Merged
Warkanlock merged 15 commits intomainfrom
feat/cli-v1
Mar 31, 2026
Merged

feat(de-cli): DualEntry CLI v1#1
Warkanlock merged 15 commits intomainfrom
feat/cli-v1

Conversation

@atrsa
Copy link
Copy Markdown
Collaborator

@atrsa atrsa commented Mar 30, 2026

Summary

CLI for the DualEntry public API with OAuth authentication and rich terminal output.

  • Auth: browser-based OAuth (WorkOS AuthKit) with keyring storage, plus X_API_KEY env var support
  • 31 resources: invoices, bills, accounts, customers, vendors, journal entries, and more — each with list, get, create, update commands
  • Filters: --search, --status, --start-date, --end-date, --limit, --offset, --all (paginate)
  • Output: rich formatted tables (--format human) or raw JSON (--format json)
  • Auto-update: checks for new versions daily via git tags, prompts to upgrade
  • Dev tooling: ruff linter/formatter, pre-commit hooks, pytest unit + integration tests, coverage

Install

uv tool install git+https://github.com/dualentry/dualentry-cli.git

Test plan

  • dualentry auth login opens browser and stores credentials
  • dualentry invoices list returns formatted table
  • dualentry invoices get <number> returns detail view
  • dualentry invoices list --format json returns raw JSON
  • dualentry bills list --status posted --start-date 2025-01-01 filters correctly
  • dualentry bills list --all paginates through all records
  • All 31 resource commands work (list + get)
  • uv run pytest passes (24 unit tests)
  • X_API_KEY=... uv run pytest tests/test_integration.py passes (125 integration tests)

@atrsa atrsa requested a review from Warkanlock March 30, 2026 23:40
Comment thread src/dualentry_cli/auth.py
Comment thread src/dualentry_cli/auth.py
Comment thread src/dualentry_cli/client.py
Comment thread src/dualentry_cli/client.py
Comment thread src/dualentry_cli/updater.py
Comment thread src/dualentry_cli/config.py
Comment thread src/dualentry_cli/commands/__init__.py
Comment thread src/dualentry_cli/main.py
@Warkanlock Warkanlock merged commit af4ba27 into main Mar 31, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants