#!/bin/sh
. libsb

n_cpu=$(grep -c 'cpu[0-9]\+' /proc/stat)
cache=$XDG_RUNTIME_DIR/cpubarscache

temp="$(sensors | awk '/CPU/ {printf ("%.f°C", $2)}' | tr -d "+")"
[ -n "$temp" ] && temp="${temp} "

new=$(awk '/cpu[0-9]+/ { printf "%d %d\n", $5, ($2 + $3 + $4 + $5) }' /proc/stat 2>/dev/null)

[ ! -f "$cache" ] && {
    echo "$new" >"$cache"
    exit
}
old=$(cat "$cache")

printf "%b" "  $temp<span ${bggray}>"

first=true
IFS='
'
for i in $(seq "$n_cpu"); do
    eval "$(echo "$old" | awk -v i="$i" 'NR==i { printf "old_idle=%s old_total=%s", $1, $2 }')"
    eval "$(echo "$new" | awk -v i="$i" 'NR==i { printf "new_idle=%s new_total=%s", $1, $2 }')"

    # shellcheck disable=SC2154
    delta_idle=$((new_idle - old_idle))
    # shellcheck disable=SC2154
    delta_total=$((new_total - old_total))

    percent=$(((delta_total - delta_idle) * 100 / delta_total))

    eval "$(meter_bar "$percent" | awk -F: '{ printf "color=\"%s\" bar=\"%s\"", $1, $2 }')"

    if [ "$color" != "$prevcolor" ]; then
        $first || printf "%b" "</span>"
        printf "%b" "<span $color>"
    fi
    printf "%b" "$bar"

    first=false
    prevcolor=$color
    index=$((index + 1))
done

printf "%s" "</span></span>"
echo "$new" >"$cache"