diff --git a/README.md b/README.md new file mode 100644 index 0000000..e4adeb9 --- /dev/null +++ b/README.md @@ -0,0 +1,91 @@ +# ynabmunger + +A CLI tool for importing bank exports into YNAB. + +## Installation + +You can download binaries from the [Releases page](https://git.shee.sh/james/ynabmunger/releases). + +To build locally, you need Rust installed and you can either: + +```bash +cargo install --git https://git.shee.sh/james/ynabmunger +``` + +or clone the repo locally and run: + +```bash +cargo install --path . +``` + +## Usage + +All commands that interact with YNAB require your API token, available from [YNAB developer settings](https://app.ynab.com/settings/developer). Set it via the `--token` flag or the `YNAB_API_TOKEN` environment variable. + +### Commands + +#### `plans` + +List available YNAB budgets: + +```bash +ynabmunger plans --token YOUR_TOKEN +``` + +#### `accounts` + +List accounts in a budget: + +```bash +ynabmunger accounts --token YOUR_TOKEN --plan "My Budget" +``` + +You can reference a budget by name (`--plan`) or ID (`--plan-id`). + +#### `transactions` + +List recent transactions (last 30 days): + +```bash +ynabmunger transactions --token YOUR_TOKEN --plan "My Budget" +``` + +Filter by account with `--account` or `--account-id`. + +#### `convert` + +Convert a bank export to YNAB-compatible CSV for manual import: + +```bash +ynabmunger convert --format bulder bank_export.csv > ynab_import.csv +``` + +Reads from stdin if no input files are given: + +```bash +cat bank_export.csv | ynabmunger convert --format bulder > ynab_import.csv +``` + +#### `import` + +Import a bank export directly into a YNAB account: + +```bash +ynabmunger import --token YOUR_TOKEN \ + --plan "My Budget" \ + --account "Checking" \ + --format bulder \ + bank_export.csv +``` + +## Bank Formats + +Currently supported formats: + +| Format | Description | +|--------|-------------| +| `bulder` | Bulder bank semicolon-delimited export | + +### Adding New Formats + +Add a new variant to the `BankFormat` enum in `src/csv.rs` and implement the reader and transform methods.