#!/bin/sh

POLLING_FREQUENCY=1

# ISO 8601
alias date="date '+%Y-%m-%dT%T'"

emit() {
	printf "[%s] " "$(date)"
	echo "$@"
}

! battery >/dev/null 2>&1 \
	&& printf "Unable to get battery status on this system.\n" 1>&2 \
	&& exit 1 \
	|| true

current_level=$(battery)
previous_level=$current_level

emit "$(printf "Current level: %d%%" "$current_level")"

while true; do
	current_level=$(battery)
	if ! streq $current_level $previous_level; then
		[ $current_level -lt $previous_level ] \
			&& emit "$(printf "Discharged: %d%% -> %d%%\n" $previous_level $current_level )" \
			|| emit "$(printf "   Charged: %d%% -> %d%%\n" $previous_level $current_level )"
		previous_level=$current_level
	fi

	sleep $POLLING_FREQUENCY
done
