git.lirion.de

Of git, get, and gud

aboutsummaryrefslogtreecommitdiffstats
path: root/bin/batman
blob: 9928931318e51abf539d604682baa778c99b30fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh

export VOERBOOS
RETVAL=0;export RETVAL
CNOW="$(cat /sys/class/power_supply/BAT0/charge_now)"
CFUL="$(cat /sys/class/power_supply/BAT0/charge_full)"
BATVAL="$(echo "scale=0;$CNOW*100/$CFUL"|bc -l)";export BATVAL
unset CNOW CFUL
BATSTATE="$(cat /sys/class/power_supply/BAT0/status)";export BATSTATE
BATFILE="/tmp/batman.sd";export BATFILE
export OPTCNT=0
batmobile() {
	if [ "$BATVAL" -le 5 ];then
		case "$BATSTATE" in
			"Charging")
				MSG="Battery charged at $BATVAL% with status \"$BATSTATE\", no shutdown."
				[ ! -z "$VOERBOOS" ]&&[ "$VOERBOOS" -eq 1 ]&&echo "$MSG"
				LMSG="Battery charged at $BATVAL% with status \"$BATSTATE\", no shutdown."
				logger -p"info" -t"batman" "$LMSG"||RETVAL=$(("$RETVAL"+$?))
				unset LMSG
				[ -e "$BATFILE" ]&&/usr/sbin/shutdown -c >/dev/null 2>&1&&rm "$BATFILE"
				SDCRV="$?"
				case "$SDCRV" in
					0) logger -p"info" -t"batman" "Shutdown cancelled.";;
					*)
						LMSG="batman" "$BATFILE exists but couldn't cancel shutdown!"
						logger -p"warn" -t"$LMSG"
						unset LMSG
						RETVAL=$(("$RETVAL"+"$SDCRV"))
					;;
				esac
			;;
			*)
				MSG="Battery charged at $BATVAL%, powering down."
				[ ! -z "$VOERBOOS" ]&&[ "$VOERBOOS" -eq 1 ]&&echo "$MSG"||true
				logger -pwarn -t"batman" "$MSG";RETVAL=$((RETVAL+"$?"))
				if [ ! -e "$BATFILE" ];then
					SMSG="Battery low and discharging, powering down. (batman)"
					/usr/sbin/shutdown -P +2 "$SMSG"&&touch "$BATFILE"
					RETVAL=$((RETVAL+"$?"))
				fi
			;;
		esac
	else
		MSG="Battery charged at $BATVAL%, no shutdown."
		[ ! -z "$VOERBOOS" ]&&[ "$VOERBOOS" -eq 1 ]&&echo "$MSG"||logger -p"info" -t"batman" "$MSG"
		RETVAL=$((RETVAL+"$?"))
	fi
}
batarang() {
	MSG="$BATVAL% ($BATSTATE)";echo "$MSG";
}

while getopts :vnp SHOPT;do
	case "$SHOPT" in
		v)VOERBOOS=1;export VOERBOOS;OPTCNT=$((OPTCNT+1));;
		p)batmobile;OPTCNT=$((OPTCNT+1));;
		n)batarang;OPTCNT=$((OPTCNT+1));;
		*)
			echo "Not supported option: -""${OPTARG}" >&2
			RETVAL=$((RETVAL+1));WRONGOPT=1 ;OPTCNT=$((OPTCNT+1))
		;;
	esac
done
shift $((OPTIND-1))
[ "$OPTCNT" -le 0 ]&&batarang
[ ! -z "$WRONGOPT" ]&&[ "$WRONGOPT" -eq 1 ]&&exit 1;true
exit "$RETVAL"