#!/usr/bin/env tsx import { auth } from "./commands/auth" import { accounts } from "./commands/accounts" import { runImport } from "./commands/import" import { init } from "./commands/init" import { backup, restore } from "./commands/backup" const [command, ...args] = process.argv.slice(2) const commands: Record Promise> = { init: () => init(), auth: () => auth(), accounts: () => accounts(), import: (args) => runImport(args), backup: () => backup(), restore: (args) => restore(args), } const handler = commands[command] if (!handler) { console.log("Usage: sb1-actual [options]") console.log("") console.log("Commands:") console.log(" init Create or edit config") console.log(" auth Authenticate with Sparebanken 1 (opens browser)") console.log(" accounts List accounts from SB1 and Actual, show mappings") console.log(" import Import transactions into Actual") console.log(" import --dry-run Preview import without writing") console.log(" import --since=YYYY-MM-DD Only fetch transactions from this date") console.log(" backup Export budget to ~/.config/sb1-actual/backups/") console.log(" restore Restore budget from a backup") process.exit(1) } handler(args).catch(err => { console.error(`Error: ${err.message}`) process.exit(1) })