Home > sassetti

sassetti

Sassetti is a project mainly written in Common Lisp, based on the View license.

A lisp-extensible wrapper for the Ledger commandline double-entry bookkeeper.

% SASSETTI(1) Version 0.1 | Sassetti User Manual % % December 2010

Introduction

Name

sassetti - Common Lisp reimplementation of John Wiegley's commandline Ledger program.

Synopsis

sassetti [options] command [acct-regex]... [-- payee-regex...]

Description

Sassetti is a Common Lisp wrapper around John Wiegley's commandline Ledger program. The goal is to harness the power of Wiegley's simple tools and extend them with the flexibility of lisp.

Overview

Sassetti is designed to read Ledger files and do with them exactly what ledger would, except for a few minor variations. First, Sassetti is in some places more forgiving than Ledger about whitespace and such. Second and more importantly, Sassetti allows you to include lisp commands among your standard Ledger entries. These get evaluated by Sassetti, and allow you to do such things as dynamically generate new entries, change how data is interpreted, and mark old transactions as cleared.

Access to Lisp enables you to write entries that are calculated or to generate multiple entries with a single line of code. For example, using the built-in function depreciate, we can schedule depreciation for an asset over a length of time. This will depreciate your gym membership over three months:

(depreciate 2010 03 "3 month gym membership" $199 3)

That one line generates three entries and schedules them appropriately. It even takes care of rounding:

`2010/03/15 Depreciate 3 month gym membership Assets:Prepaid:3 month gym membership $-66.33 Expenses:Depreciation:3 month gym membership $66.33

2010/04/15 Depreciate 3 month gym membership Assets:Prepaid:3 month gym membership $-66.33 Expenses:Depreciation:3 month gym membership $66.33

2010/05/15 Depreciate 3 month gym membership Assets:Prepaid:3 month gym membership $-66.34 Expenses:Depreciation:3 month gym membership $66.34`

Sassetti integrates into your workflow in two ways. It can parse your ledger file and perform many of the same functions as Ledger itself. Alternatively, Sassetti can generate a new ledger file, which you can feed to Ledger (with Ledger's -f commandline parameter) or do whatever you normally do with those files.

Commands

All commands require a Sassetti data file which can be specified (in order of precedence) with -f filename or via the SASSETTI_FILE or LEDGER_FILE environment variables. TODO: check the environment variables for data files.

Sassetti passes commands through to Ledger. Check Ledger's documentation for information about bal, balance, reg, register, print, xml, emacs, equity, prices, pricedb, and entry.

Sassetti also defines some a new command:

parse

Read the Sassetti data file, interpret the lisp in that file as needed, and generate a Ledger data file that can be processed by Ledger. This is useful if you are working with Ledger users who are not Sassetti-enabled or if you want to take advantage of Ledger features Sassetti has not yet implemented.

Options

TODO: Document options