karma - annna - Annna the nice friendly bot.
HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR README
---
karma (1502B)
---
1 #!/bin/sh
2
3 karmamodbase="$HOME/bin/modules/karma"
4 karmadb="${karmamodbase}/karma.txt"
5
6 function setkarmaval {
7 if [ -n "$(grep -P "^${1}\t" "${karmadb}")" ];
8 then
9 sed -i "s,^${1}\t.*,${1}\t${2}," "${karmadb}"
10 else
11 printf "%s\t%d\n" "${1}" "${2}" >> "${karmadb}"
12 fi
13 }
14
15 function parsekarma {
16 karmatag="$(printf "%s\n" "${1}" | sed -e 's,^\([a-zA-Z_0-9]*\).*$,\1,')"
17 [ -z "${karmatag}" ] && karmatag="karma"
18 printf "%s\n" "${karmatag}"
19 }
20
21 function getkarmaval {
22 karmatag="${1}"
23 karmaval="$(grep -P "^${karmatag}\t" "${karmadb}" | cut -f 2)"
24 [ -z "${karmaval}" ] && printf "0\n"
25 printf "%s\n" "${karmaval}"
26 }
27
28 function modifykarma {
29 karmatag="$1"
30 karmaval=$(getkarmaval "${karmatag}")
31 newkarmaval="$(printf "%d%s\n" "${karmaval}" "$2" | bc)"
32 setkarmaval "${karmatag}" $newkarmaval
33 printf "%s = %d\n" "$karmatag" "$newkarmaval"
34 }
35
36 function inckarma {
37 modifykarma "$1" " + $2"
38 }
39
40 function deckarma {
41 modifykarma "$1" " - $2"
42 }
43
44 function parsechangevalue {
45 printf "%s\n" "${1}" | sed -e 's,.*[+|-]=\([0-9\-]*\),\1,'
46 }
47
48 karmastr="$1"
49 karmatag="$(parsekarma "${karmastr}")"
50 case "${karmastr}" in
51 *" "*)
52 ;;
53 *","*)
54 ;;
55 *+=*)
56 inckarma "${karmatag}" "$(parsechangevalue "${karmastr}")"
57 ;;
58 *++)
59 inckarma "${karmatag}" "1"
60 ;;
61 *-=*)
62 deckarma "${karmatag}" "$(parsechangevalue "${karmastr}")"
63 ;;
64 *--)
65 deckarma "${karmatag}" "1"
66 ;;
67 "${karmatag}")
68 karmaval="$(getkarmaval "${karmatag}")"
69 printf "%s = %d\n" "$karmatag" "$karmaval"
70 ;;
71 *)
72 sort -r -k 2 "${karmadb}" | column -t
73 ;;
74 esac
75