#!/bin/sh
# Archlinux version
# integer scheck inspired from: https://stackoverflow.com/a/16444570
#
# Author: Dominic Reich <quick.hat4396@qtztsjosmprqmgtunjyf.com>

print_usage () {
  echo >&2 "usage: $(basename ${0}) [0..100]"
  exit 1
}

# check if argument given or not (list or set value)
if [ $# -eq 1 ]
then
  # set value (select between ac or bat mode)
  # check if argument is integer between 0,100
  case $1 in
    (*[!0-9]*|'')
      print_usage
      exit
      ;;
    (*)
      if [ "$1" -ge 0 ] && [ "$1" -le 100 ] 2>/dev/null
      then
        # argument given and between 0,100
        case $( cat /sys/class/power_supply/AC/online ) in

          (0) # BATTERY
            echo "$1" > ${HOME}/.backlight-bat
            ;;

          (1) # AC
            echo "$1" > ${HOME}/.backlight-ac
            ;;

        esac
        blight set ${1}%
      else
        # arg not between 0 and 100
        print_usage
      fi
      ;;
  esac
else
  # no args given, only list values
  case $( cat /sys/class/power_supply/AC/online ) in
    (0) # BATTERY
      current=bat
      ;;
    (1) # AC
      current=ac
      ;;
  esac

  # 100%  24242

  for status in ac bat
  do
    if [ "${status}" = "${current}" ]
    then
      echo -e "${status}: ★ \t$( cat ${HOME}/.backlight-${status} )" | tr "[:lower:]" "[:upper:]"
    else
      echo -e "${status}:\t$( cat ${HOME}/.backlight-${status} )" | tr "[:lower:]" "[:upper:]"
    fi
  done
  value=$(python -c "print(round(100/24242*`blight get`))")
  echo -e "CUR:\t$(python -c "print($value)")"
fi
