#!/usr/bin/env bash

cache_dir=~/.cache/tmux
cache_file=$cache_dir/system-info

# Make sure the output directory exists.
if [ ! -d $cache_dir ]; then
  mkdir -p $cache_dir
fi

# Cleanup cache file when interrupted.
trap '[ -f $cache_file ] && rm $cache_file; exit' INT
trap '[ -f $cache_file ] && rm $cache_file; exit' TERM

# Check if a battery is installed.
ioreg -w0 -l | grep BatteryInstalled &> /dev/null && \
  has_battery=true || has_battery=false

while true; do
  # # Get the current CPU temperature.
  # cpu_temp="`/usr/local/bin/osx-cpu-temp`"

  cpu_load=$(sudo powermetrics --format text \
      --sample-rate 1200 --sample-count 1 --samplers cpu_power |
    grep --color=never -E 'CPU \d idle residency:' |
    grep --color=never -Eo '\d+\.\d+' |
    gawk '$idle ~ /[-.0-9]*/ { printf "%s", substr("█▇▆▅▄▃▂▁ ", int($idle / 10), 1) }'
  )

  # Parse the current battery charge percentage.
  if $has_battery; then
    raw_battery="$(pmset -g batt | \
      grep --color=never 'InternalBattery' | \
      grep --color=never -Eo '\d+%' | \
      grep --color=never -Eo '\d+')"
    battery="$(echo $raw_battery | gawk '$battery ~ /.*/ {
      printf "%3d%% %s\n", $battery, substr("󰂎󰁺󰁻󰁼󰁽󰁾󰁿󰂀󰂁󰂂󰁹", int($battery / 9), 1)
    }')"
  fi

  # Write to the cache file.
  echo "$cpu_temp$cpu_load$battery" > $cache_file
done