Better beer statistics
[mirrors/Programs.git] / c / beermeter / beermeter.sh
CommitLineData
1e697494 1#!/bin/sh
1c6c46fe
TM
2pulses_per_liter='4380'
3beer_liters='0.5'
4beer_price='23'
5currency='Kč'
6
1e697494
TM
7title='Beer-O-Meter'
8accounts='./accounts'
2f17eaa1 9totals="$accounts/.totals"
1e697494
TM
10backend='./audio.sh'
11tmp="/tmp/beertmp-$$";
12dialog=$(which dialog);
13
0f83fcdd
TM
14rst() { echo -ne "\033[0;0H"; }
15
1c6c46fe 16calc() {
0f83fcdd
TM
17 precise="$(echo 'scale=10; '"$@" | bc)"
18 echo 'scale=2; '"$precise/1" | bc
19}
20
21beer_calc() {
22 pulses="$1"
23 litres=$(calc "$pulses/$pulses_per_liter")
24 beers=$(calc "($pulses/$pulses_per_liter)/$beer_liters")
25 price=$(calc "(($pulses/$pulses_per_liter)/$beer_liters)*$beer_price")
26 echo $beers beers '('$price $currency, $litres l, $pulses pulses')'
27}
28
29beer_pulses() {
30 echo $(wc -c "$accounts/$1" | cut -d ' ' -f 1)
1c6c46fe
TM
31}
32
1e697494 33beer_stat() {
0f83fcdd 34 beer_calc "$(beer_pulses "$1")"
1e697494
TM
35}
36
37add_account() {
38 "$dialog" --inputbox "New account name" 0 0 2>"$tmp"
39 [ $? = 0 ] && touch "$accounts/$(cat "$tmp")";
40}
41
42servis_menu() {
43 $dialog --menu "$title servis" 0 0 0 new "Novy stamgast" exit "Konec party" 2>"$tmp"
44 option="$(cat "$tmp")"
45
46 case $option in
47 new)
48 add_account
49 ;;
50 exit)
2f17eaa1
TM
51 clear
52 echo "=== Totals ($totals) ==="
53 echo
54 cat "$totals"
55 echo
1e697494
TM
56 exit
57 ;;
58 esac
59}
60
61beer_menu() {
2f17eaa1 62 echo -n > "$totals"
1e697494
TM
63 ls -1 --group-directories-first "$accounts" | while read i; do
64 echo -n "$i"; echo -ne "\x00";
65 echo -n $(beer_stat "$i"); echo -ne "\x00"
2f17eaa1 66 echo -e "$i\t$(beer_stat "$i")" >> "$totals"
1e697494
TM
67 done | xargs -0 $dialog --menu "$title stamgasti" 0 0 0
68}
69
0f83fcdd
TM
70tap() {
71 stamgast="$1"
72
73 pulses_start=$(beer_pulses "$stamgast")
74 clear
75 while true; do
76 pulses_current=$(beer_pulses "$stamgast")
77 pulses_diff=$[ $pulses_current - $pulses_start ]
78
79 rst
80 echo == Cepuje stamgast $stamgast, ukonci ctrl+c ==
81 echo "CURRE: $(beer_calc $pulses_diff) ";
82 echo "TOTAL: $(beer_calc $pulses_current) ";
83 sleep 0.5;
84 done &
85 "$backend" | tee -a "$accounts/$stamgast" >/dev/null
86 kill $!
87}
88
1e697494
TM
89main_menu() {
90 while true; do
91 beer_menu 2>"$tmp"
92 [ "$?" = "0" ] && {
0f83fcdd 93 tap "$(cat "$tmp")"
1e697494
TM
94 true
95 } || servis_menu
96 done
97}
98
99main_menu
This page took 0.157476 seconds and 4 git commands to generate.