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