An open API service indexing awesome lists of open source software.

https://github.com/woodruffw/pledger

A small personal expense ledger.
https://github.com/woodruffw/pledger

Last synced: 7 months ago
JSON representation

A small personal expense ledger.

Awesome Lists containing this project

README

          

pledger
=======

![license](https://raster.shields.io/badge/license-MIT%20with%20restrictions-green.png)
[![CI](https://github.com/woodruffw/pledger/actions/workflows/ci.yml/badge.svg)](https://github.com/woodruffw/pledger/actions/workflows/ci.yml)

> [!WARNING]
>
> This project has been archived and is not being actively maintained.

A small personal expense ledger.

All `pledger` does is track monthly expenses.

## Installation

`pledger` is a single command-line program. You can install it using `cargo`:

```bash
cargo install pledger
```

Or by building it locally:

```bash
git clone https://github.com/woodruffw/pledger && cd pledger
cargo build
```

## Usage

`pledger` takes only one input: a directory where monthly ledgers are stored:

```bash
pledger expenses/
```

Alternatively, you can use `PLEDGER_DIR` to pass the directory:

```bash
PLEDGER_DIR=expenses/ pledger
```

Ledgers are stored as structured text files with the filename `YYYY-MM.ledger`. Read about the `pledger`
format [below](#ledger-format).

For example, here's a listing for a directory with three months of expenses:

```bash
$ ls expenses/
2018-02.ledger
2020-01.ledger
2020-02.ledger
```

`pledger` ignores files that don't match the `YYYY-MM.ledger` format.

By default, `pledger` reports expenses for the current month.

To run `pledger` on a previous date, use `pledger -d ` or `pledger -l`:

```bash
# do a report on january 2017
pledger -d 2017-01 expenses/

# the month name or single number is also enough for the current year
# do a report on april, then march
pledger -d april expenses/
pledger -d 3 expenses

# -l/--last is a shortcut for last month's ledger
pledger -l expenses/
```

`pledger` can also generate a report for all records with `pledger --all`, or for a specific year
with `pledger --year YEAR`.

By default, pledger outputs a plain text report. You can use the `--json` flag to output JSON
instead, for consumption by other tools:

```bash
pledger --json expenses/ > monthly.json
```

## Ledger format

`pledger`'s ledgers are plain text files, with one entry per line. Debits begin with `D`,
credits with `C`, and the rest of the format is mostly self-explanatory:

```
C 130.00 #bonus
D 8.00 burger and fries #weekday #lunch
D 27.00 saturday drinks #weekend #alcohol
D 20,000.12 new car #essential
```

Everything after the currency amount is the _comment_. The _comment_ can include _tags_, which
begin with `#` and can be alphanumeric + symbolic. `pledger` uses your tags to provide expense
summaries; duplicate tags in a comment are removed.

Empty lines or lines that begin with `#` are ignored.