1
0
Keep track of your piggy bank.
Go to file
2020-07-07 02:28:32 +04:00
piggybank A little clean up. 2020-07-07 02:28:31 +04:00
.gitignore Performed some refactoring on an existing code base before further work. 2020-03-27 20:14:22 +04:00
COPYING I changed the license from WTFPLv2 to MIT. 2020-06-30 23:45:17 +04:00
Makefile Makefile 2020-06-08 05:40:38 +04:00
pyproject.toml --user flag added in Makefile. Added a pyproject.toml file. setup.cfg fixed. 2020-06-05 03:50:21 +04:00
README.md Added brief usage to README. 2020-07-07 02:28:32 +04:00
setup.cfg Shit, forgot this place. 2020-07-07 02:28:32 +04:00
setup.py Initial commit adding everything that consists the project. 2019-12-25 23:08:20 +04:00

Keep track of your piggy bank.

Every time you put coins in or take them out of your piggy bank, write here down how much did you put or take. So you won't have to spend time counting them when you decide to take them all out.

Yes, only coins, no banknots. Well, you actually can easily add support for banknots, but table will become indeed wide.

Usage

piggybank [OPTIONS] (COINS in FILE [of CURRENCY] | COINS from FILE
| show FILE [with t(ransactions)])

Common options:

  • -h,--help — print this help;

  • -v,--version — print program version;

  • -L,--list-currencies — list supported currencies and a default one;

  • --set-default-currency — set currency that'll be used as a default;

Brief usage with examples

Put coins in

piggybank [-r | --reversed] COINS in FILE [of CURRENCY]
piggybank -r 1 4 5 4 6 8 in example.pb of SRUB

Take coins out

piggybank [-r | --reversed] COINS from FILE
piggybank -r 5 4 6 from example.pb

Show information on your piggy bank

piggybank show FILE [with t(ransactions)]
piggybank show example.pb with t

Set default currency

piggybank --set-default-currency USD

How to put coins in

piggybank [-r | --reversed] COINS in FILE [of CURRENCY]

--reversed flag reverses the order of coins. By default they come from least significant face value to the most significant one and as stated above being complemented from left so a set shorter than number of coins in a currency, e.g. 5 8 4 will be interpreted as 0 0 0 5 8 4. And this flag will make it to be interpreted as 5 8 4 0 0 0. It is convenient if you want to add only coins of low face value (e.g. cents).

COINS is a set of coins' counts separated with space or comma character. For example: 0 5 0 4 6 7. By default trailing zeroes will be added from the left. So if you wrote something like 6 0 5 12 then it will be complemented to 0 0 6 0 5 12 if currency has 6 coins.

FILE is a name of a piggy bank file wich may not have a .pb extension at the end, it will be added automatically.

CURRENCY specifies the currency of a new piggy bank. It will not change currency of an existing piggy bank. ISO standard is used, e.g. EUR. Case-insensitive.

Examples:

piggybank 7 4 3 0 5 in example.pb of EUR
piggybank -r 0 4 6 in example

How to take coins out

piggybank [-r | --reversed] COINS from FILE

All the parameters are explained above.

Examples:

piggybank -r 0 0 4 from example.pb

How to see what you have in there

piggybank show FILE [with t(ransactions)]

It will print a summary table of what is stored in a piggy bank.

with t(ransactions) will print also a table of all transactions stored in a file.

Examples:

piggybank show example.pb with t

Configuration

Configuration file piggybank.conf is stored in directory specified by $XDG_CONFIG_HOME environment variable or, if it isn't set, in $HOME/.config on Linux and in %APPDATA% on Windows.

By default it has following content:

default-currency = SRUB

Aside from default-currency there is also a currency.* parameter. * is a currency's ISO code, e.g. currency.RUB, currency.USD, currency.EUR etc. This parameter allows you to add a currency needed for you, but not presented in program.

Currency is defined following way:

currency.ISO = ISO;NAME;DESCRIPTION;COINS_COUNT;COINS_NAME;FACE_VALUES

That is best described with an example. Here it is:

currency.EXM = EXM;Example;Example currency;2;1E,2E;100,200

Yes, long and clunky way... May be I'll come up with something better.