#!/bin/sh

get_usage_span() {
    usage=$1
    if [ "$usage" -lt 5 ]; then
        echo "<span color='#22222200'>⚊</span>"
    elif [ "$usage" -lt 25 ]; then
        echo "<span color='#74736933'>⚋</span>"
    elif [ "$usage" -lt 45 ]; then
        echo "<span color='#74736966'>⚏</span>"
    elif [ "$usage" -lt 65 ]; then
        echo "<span color='#99cc9966'>☷</span>"
    elif [ "$usage" -lt 85 ]; then
        echo "<span color='#99cc9999'>☳</span>"
    elif [ "$usage" -lt 95 ]; then
        echo "<span color='#99cc99cc'>☱</span>"
    else
        echo "<span color='#99cc99'>☰</span>"
    fi
}

# Get measurements and output bars
prev_stats=$(grep "^cpu[0-9]" /proc/stat)
sleep 0.5
curr_stats=$(grep "^cpu[0-9]" /proc/stat)

echo "$prev_stats" | while IFS= read -r prev_line; do
    cpu_num=$(echo "$prev_line" | cut -d' ' -f1 | sed 's/cpu//')
    curr_line=$(echo "$curr_stats" | grep "^cpu$cpu_num ")

    set -- $prev_line
    prev_total=$(($2 + $3 + $4 + $5))
    prev_idle=$5

    set -- $curr_line
    curr_total=$(($2 + $3 + $4 + $5))
    curr_idle=$5

    total_diff=$((curr_total - prev_total))
    idle_diff=$((curr_idle - prev_idle))

    if [ $total_diff -gt 0 ]; then
        usage=$(((total_diff - idle_diff) * 100 / total_diff))
        get_usage_span "$usage"
    fi
done | tr -d '\n'
echo