#!/usr/bin/env bash

icons=("" "" "" "" "" "" "" "")

geticon() {
	if [ "$STATE" = "Charging" ]; then
    level=$(awk -v n="$CAPACITY" 'BEGIN{print int((n-1)/12)}')
		echo "${icons[$level]}"
	else
    level=$(awk -v n="$CAPACITY" 'BEGIN{print int((n-1)/12)}')
		echo "${icons[$level]}"
	fi
}

status() {
	if [ "$STATE" = "Charging" ]; then
		echo -n "charging"

		if [ "$RATE" -gt 0 ]; then
			echo ", $(gettime) left"
		else
			echo ""
		fi
	elif [ "$STATE" = "Discharging" ]; then
		echo "$(gettime)h left"
	else
		echo "fully charged"
	fi
}

color() {
	if [ "$CAPACITY" -le 20 ]; then
		echo '#f38ba8'
	else
		echo '#a6e3a1'
	fi
}

wattage() {
	echo "$(bc -l <<< "scale=1; $RATE / 1000000") W"
}

gettime() {
	FULL=$(cat /sys/class/power_supply/BAT0/energy_full)
	NOW=$(cat /sys/class/power_supply/BAT0/energy_now)

	if [ "$RATE" -gt 0 ]; then
		if [ "$STATE" = "Discharging" ]; then
			EX="$NOW / $RATE"
		else
			EX="($FULL - $NOW) / $RATE"
		fi
		date -u -d@"$(bc -l <<< "$EX * 3600")" +%H:%M
	fi
}

while true; do
	RATE=$(cat /sys/class/power_supply/BAT0/power_now)
	CAPACITY=$(cat /sys/class/power_supply/BAT0/capacity)
	STATE=$(cat /sys/class/power_supply/BAT0/status)

	echo '{ "icon": "'"$(geticon)"'", "percentage": '"$CAPACITY"', "wattage": "'"$(wattage)"'", "status": "'"$(status)"'", "color": "'"$(color)"'" }'
	sleep 3
done