#!/usr/bin/env bash

icons=("󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹")
icons_charging=("󰂆" "󰂇" "󰂈" "󰂉" "󰂅")

# declare -A baticon=([10]="󰁺" [20]="󰁻" [30]="󰁼" [40]="󰁽" [50]="󰁾" [60]="󰁿" [70]="󰂀" [80]="󰂁" [90]="󰂂" [100]="󰁹")

geticon() {
	if [ "$STATE" = "Charging" ]; then
    level=$(awk -v n="$CAPACITY" 'BEGIN{print int((n-1)/20)}')
		echo "${icons_charging[$level]}"
	else
    level=$(awk -v n="$CAPACITY" 'BEGIN{print int((n-1)/10)}')
		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