Commit | Line | Data |
---|---|---|
1e697494 | 1 | #!/bin/sh |
1c6c46fe TM |
2 | pulses_per_liter='4380' |
3 | beer_liters='0.5' | |
4 | beer_price='23' | |
5 | currency='Kč' | |
6 | ||
1e697494 TM |
7 | title='Beer-O-Meter' |
8 | accounts='./accounts' | |
2f17eaa1 | 9 | totals="$accounts/.totals" |
1e697494 TM |
10 | backend='./audio.sh' |
11 | tmp="/tmp/beertmp-$$"; | |
12 | dialog=$(which dialog); | |
13 | ||
0f83fcdd TM |
14 | rst() { echo -ne "\033[0;0H"; } |
15 | ||
1c6c46fe | 16 | calc() { |
0f83fcdd TM |
17 | precise="$(echo 'scale=10; '"$@" | bc)" |
18 | echo 'scale=2; '"$precise/1" | bc | |
19 | } | |
20 | ||
21 | beer_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 | ||
29 | beer_pulses() { | |
30 | echo $(wc -c "$accounts/$1" | cut -d ' ' -f 1) | |
1c6c46fe TM |
31 | } |
32 | ||
1e697494 | 33 | beer_stat() { |
0f83fcdd | 34 | beer_calc "$(beer_pulses "$1")" |
1e697494 TM |
35 | } |
36 | ||
37 | add_account() { | |
38 | "$dialog" --inputbox "New account name" 0 0 2>"$tmp" | |
39 | [ $? = 0 ] && touch "$accounts/$(cat "$tmp")"; | |
40 | } | |
41 | ||
42 | servis_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 | ||
61 | beer_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 |
70 | tap() { |
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 |
89 | main_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 | ||
99 | main_menu |