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
|
2019-12-29 22:40:50 +04:00
|
|
|
how much did you put or take. So you won't have to spend time counting them when
|
2019-12-25 23:08:20 +04:00
|
|
|
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.
|
|
|
|
|
2019-12-29 22:40:50 +04:00
|
|
|
# Backstory
|
|
|
|
|
|
|
|
Many years ago I wrote a little script to store info on how much coins I have
|
|
|
|
in my piggy bank. It used SQLite 3 database for it and was hardcoded to rubles.
|
2020-06-05 03:49:23 +04:00
|
|
|
Why had I use whole SQL database? That was the first time I tried SQLite in
|
|
|
|
Python.
|
2019-12-29 22:40:50 +04:00
|
|
|
|
2020-06-05 03:49:23 +04:00
|
|
|
Once I came up with an idea that it would be good to learn on how to make
|
2019-12-29 22:40:50 +04:00
|
|
|
packages for Python. And with no better ideas I took my piggy bank script to be
|
|
|
|
rewritten to support any currency. Database was thrown away and its place was
|
|
|
|
took by a simple text format.
|
|
|
|
|
2019-12-25 23:08:20 +04:00
|
|
|
# Usage
|
|
|
|
|
|
|
|
This is a CLI program that is broken down to three separate programs:
|
|
|
|
|
|
|
|
- `piggybank-put` — puts coins in a piggy bank and create a new one if
|
|
|
|
there is no such file;
|
|
|
|
- `piggybank-take` — takes coins from an existsing piggy bank file;
|
|
|
|
- `piggybank-show` — shows summarised information on a piggy bank and,
|
2020-06-05 03:49:23 +04:00
|
|
|
optionally, print a list of transactions.
|
2019-12-25 23:08:20 +04:00
|
|
|
|
|
|
|
## Common flags
|
|
|
|
|
|
|
|
```bash
|
2020-06-05 03:49:23 +04:00
|
|
|
piggybank-* [(-h | --help) | (-v | --version) | (-L | --list-currencies)
|
|
|
|
| --set-default-currency]
|
2019-12-25 23:08:20 +04:00
|
|
|
```
|
|
|
|
|
2020-06-05 03:49:23 +04:00
|
|
|
These flags are used with every sub-program.
|
|
|
|
|
|
|
|
`--help` to show help.
|
2019-12-29 22:40:50 +04:00
|
|
|
|
|
|
|
`--version` to show version of program.
|
|
|
|
|
|
|
|
`--list-currencies` to show what currencies supported and which one is default.
|
2019-12-25 23:08:20 +04:00
|
|
|
|
2020-06-05 03:49:23 +04:00
|
|
|
`--set-default-currency` to set a currency of your choice as default one.
|
|
|
|
|
2019-12-25 23:08:20 +04:00
|
|
|
## How to put coins in
|
|
|
|
|
|
|
|
```bash
|
2020-06-05 03:49:23 +04:00
|
|
|
piggybank-put [-r | --reverse] COINS in FILE of CURRENCY
|
2019-12-25 23:08:20 +04:00
|
|
|
```
|
|
|
|
|
2019-12-29 22:40:50 +04:00
|
|
|
`--reverse` flag reverses the order of coins. By default they come from least
|
2019-12-25 23:08:20 +04:00
|
|
|
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,
|
2020-06-05 03:49:23 +04:00
|
|
|
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.
|
2019-12-25 23:08:20 +04:00
|
|
|
|
2020-06-05 03:49:23 +04:00
|
|
|
`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.
|
2019-12-25 23:08:20 +04:00
|
|
|
|
|
|
|
### Examples:
|
|
|
|
|
2019-12-29 22:40:50 +04:00
|
|
|
```bash
|
2020-06-05 03:49:23 +04:00
|
|
|
piggybank-put 7 4 3 0 5 in example.pb of EUR
|
|
|
|
piggybank-put -r 0 4 6 in example
|
2019-12-29 22:40:50 +04:00
|
|
|
```
|
2019-12-25 23:08:20 +04:00
|
|
|
|
|
|
|
## How to take coins out
|
|
|
|
|
|
|
|
```bash
|
2020-06-05 03:49:23 +04:00
|
|
|
piggybank-take [-r | --reverse] COINS in FILE
|
2019-12-25 23:08:20 +04:00
|
|
|
```
|
|
|
|
|
2020-06-05 03:49:23 +04:00
|
|
|
All the parameters are explained above.
|
2019-12-25 23:08:20 +04:00
|
|
|
|
|
|
|
### Examples:
|
|
|
|
|
|
|
|
```bash
|
2020-06-05 03:49:23 +04:00
|
|
|
piggybank-take -r 0 0 4 from example.pb
|
2019-12-25 23:08:20 +04:00
|
|
|
```
|
|
|
|
|
|
|
|
## How to see what do you have
|
|
|
|
|
2019-12-29 22:40:50 +04:00
|
|
|
```bash
|
2020-06-05 03:49:23 +04:00
|
|
|
piggybank-show FILE [ with (t | transactions)]
|
2019-12-29 22:40:50 +04:00
|
|
|
```
|
2019-12-25 23:08:20 +04:00
|
|
|
|
2020-06-05 03:49:23 +04:00
|
|
|
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.
|
2019-12-25 23:08:20 +04:00
|
|
|
|
|
|
|
### Examples:
|
|
|
|
|
|
|
|
```bash
|
2020-06-05 03:49:23 +04:00
|
|
|
piggybank-show example.pb with t
|
2019-12-25 23:08:20 +04:00
|
|
|
```
|