1
0
PiggyBank/README.md

110 lines
3.2 KiB
Markdown
Raw Normal View History

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.
# 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.
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
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.
# 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.
## Common flags
```bash
2020-06-05 03:49:23 +04:00
piggybank-* [(-h | --help) | (-v | --version) | (-L | --list-currencies)
| --set-default-currency]
```
2020-06-05 03:49:23 +04:00
These flags are used with every sub-program.
`--help` to show help.
`--version` to show version of program.
`--list-currencies` to show what currencies supported and which one is default.
2020-06-05 03:49:23 +04:00
`--set-default-currency` to set a currency of your choice as default one.
## How to put coins in
```bash
2020-06-05 03:49:23 +04:00
piggybank-put [-r | --reverse] COINS in FILE of CURRENCY
```
`--reverse` 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,
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.
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.
### Examples:
```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
```
## How to take coins out
```bash
2020-06-05 03:49:23 +04:00
piggybank-take [-r | --reverse] COINS in FILE
```
2020-06-05 03:49:23 +04:00
All the parameters are explained above.
### Examples:
```bash
2020-06-05 03:49:23 +04:00
piggybank-take -r 0 0 4 from example.pb
```
## How to see what do you have
```bash
2020-06-05 03:49:23 +04:00
piggybank-show FILE [ with (t | transactions)]
```
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.
### Examples:
```bash
2020-06-05 03:49:23 +04:00
piggybank-show example.pb with t
```