diff --git a/src/simplefin/cli/__init__.py b/src/simplefin/cli/__init__.py index 2fbacf9..972b4c3 100644 --- a/src/simplefin/cli/__init__.py +++ b/src/simplefin/cli/__init__.py @@ -39,25 +39,36 @@ def setup() -> None: @cli.command() -def accounts() -> None: +@click.option( + "--format", + type=click.Choice(["json", "table"], case_sensitive=False), + default="table", + help="Specify output format", +) +def accounts(format: str) -> None: c = SimpleFINClient(access_url=os.getenv("SIMPLEFIN_ACCESS_URL")) accounts = c.get_accounts() - table = Table(title="SimpleFIN Accounts") - table.add_column("Institution") - table.add_column("Account") - table.add_column("Balance") - table.add_column("Account ID") - - for account in accounts: - table.add_row( - account["org"]["name"], - account["name"], - str(account["balance"]), - account["id"], - ) - console = Console() - console.print(table) + if format == "json": + console = Console() + console.print(json.dumps(accounts, indent=4, cls=DateTimeEncoder)) + else: + table = Table(title="SimpleFIN Accounts") + table.add_column("Institution") + table.add_column("Account") + table.add_column("Balance") + table.add_column("Account ID") + + for account in accounts: + table.add_row( + account["org"]["name"], + account["name"], + str(account["balance"]), + account["id"], + ) + + console = Console() + console.print(table) # TODO: Add date range option