Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upGitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
README
% 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