#!/bin/sh -e

__bat() {
  local perc=0
  local pmark="%"
  local status="x" # "x" = 死亡, "-" = 放電, "+" = 充電, "=" = 満足
  local isadapter=0
  local isbattery=0

  case "$(uname)" in
    Linux)
      ;;
    OpenBSD)
      perc=$(apm -l)
      isadapter=$(apm -a)
      isbattery=$(apm -b)
      if [ $(($isadapter)) = 1 ] && [ $(($perc)) -gt 98 ]; then
        status="="
      elif [ $(($isadapter)) = 1 ] && [ $(($perc)) -lt 98 ]; then
        status="+"
      elif [ $(($isbattery)) = 1 ]; then
        status="-"
      fi
      ;;
    NetBSD)
      for i in $(seq 0 1); do
        if envstat -d acpibat$i | grep -q 'present:[[:space:]]*TRUE'; then
          batterynum=$i
          break
        fi
      done
      perc=$(envstat -d acpibat$batterynum | awk '/charge:/ {gsub(/[\(%\)]/, "", $6); printf "%d\n", $6}')
      isadapter=$(envstat -d acpibat$batterynum | awk '/charging:/ {print $2}')
      if [ "$isadapter" = "TRUE" ] && [ "$perc" -gt 98 ]; then
        status="="
      elif [ "$isadapter" = "TRUE" ] && [ "$perc" -lt 98 ]; then
        status="+"
      elif [ "$isadapter" = "FALSE" ]; then
        status="-"
      fi
      ;;
    FreeBSD)
      perc=$(apm -l)
      isadapter=$(apm -a)
      if [ "$isadapter" = 1 ] && [ "$perc" -gt 98 ]; then
        status="="
      elif [ "$isadapter" = 1 ] && [ "$perc" -lt 98 ]; then
        status="+"
      elif [ "$isadapter" = 0 ]; then
        status="-"
      fi
      ;;
    Darwin)
      perc=$(pmset -g batt | tail -1 | awk '{print $3}' | sed 's/%;//')
      isadapter=$(pmset -g batt | head -1 | awk '{print $4}' | sed "s/'//")
      if [ "$isadapter" = "AC" ] && [ "$perc" -gt 98 ]; then
        status="="
      elif [ "$isadapter" = "AC" ] && [ "$perc" -lt 98 ]; then
        status="+"
      elif [ "$isadapter" = "Battery" ]; then
        status="-"
      fi
      ;;
  esac

  color b g W; printf "%s %d%s" "$status" "$perc" "$pmark"; color --
}