#!/bin/bash
case $1 in
  install)
    if ! [ -d "/etc/sv/$2" -a -e "/etc/sv/$2/run" ]; then
        mkdir -p "/etc/sv/$2"
        cp -v "$3" "/etc/sv/$2/run"
        chmod a+x "/etc/sv/$2/run"
        echo "installed: $2"
    fi
  ;;
  disable)
    [ -L "/etc/service/$2" ] && rm -v "/etc/service/$2"
    echo "disabled: $2"
  ;;
  enable)
    [ -L "/etc/service/$2" ] || ln -vs "/etc/sv/$2" "/etc/service/$2"
    echo "enabled: $2"
  ;;
  reload)
    sv stop $2
    [ -L "/etc/service/$2" ] && rm -v "/etc/service/$2"
    echo "disabled: $2"
    [ -L "/etc/service/$2" ] || ln -vs "/etc/sv/$2" "/etc/service/$2"
    echo "enabled: $2"
    sv start $2
    ;;
  list)
    ls -1 /etc/service
  ;;
  list-avail*)
    ls -1 /etc/sv/
  ;;
  status)
    if [ -n "$2" ]; then
      if [ -L "/etc/service/$2" ]; then
        echo "enabled:"
        sv status "$2"
      else
        echo "disabled:"
        echo "$2"
      fi
      exit 0
    fi

    echo "enabled:"
    for i in /etc/sv/*; do
      i=${i##/etc/sv/}
      if [ -L "/etc/service/$i" ]; then
        sv status "$i"
      fi
    done
    echo "disabled:"
    for i in /etc/sv/*; do
      i=${i##/etc/sv/}
      if ! [ -L "/etc/service/$i" ]; then
        echo "$i";
      fi
    done
  ;;
  *)
    echo "Unofficial runit service manager"
    echo "Usage: $0 {enable|disable|reload <service>}|{list|list-avail}|{install <service> <run-file>}"
    echo "Service will be automatically stopped forever/started after enable/disable commands"
    echo "Use sv command to start/stop/etc single service"
    exit 1
  ;;
esac
