#!/bin/sh
#
# A handy command to start/stop/restart/powerdown daemons using scripts in
# /etc/init.d or /service.
#
mode=$(basename "$0")

log() {
  echo "$@" >&2
}

usage() {
  log "Usage: start|stop|restart|powerdown <programs...>"
  exit 99
}

endswith() {
  [ "$1" != "${1%$2}" ]
}

suggestions() {
  local prog="$1" d
  for d in /etc/init.d/S??*; do
    if { echo "$d"; cat "$d"; } | grep -q "$prog"; then
      echo "${d#/etc/init.d/S??}(${d#/etc/init.d/})"
    fi
  done
  for d in /service/*; do
    [ "$d" = "/service/s6rc-fdholder" ] && continue
    endswith "$d" "-log" && continue
    if { echo "$d"; cat $d/run* 2>/dev/null; } | grep -q "$prog"; then
      echo "${d#/service/}($d)"
    fi
  done
}


case "$mode" in
  start|stop|restart|powerdown) ;;
  *) usage ;;
esac

rv=0
any=
for prog in "$@"; do
  any=1
  prog=${prog##*/}

  if [ -z "$prog" ]; then
    log "Error: invalid program name '$prog'"
    rv=1
    continue
  fi

  # New-style services (s6)
  if s6-rc-db type "$prog" >/dev/null 2>/dev/null; then
    # Don't need to worry about lockfile-create/lockfile-remove here;
    # s6 already ensures services don't start more than once.
    case "$mode" in
      start)
        log "Starting /service/$prog..."
        s6-rc -v2 -u change "$prog"
        ;;
      stop)
        log "Stopping /service/$prog..."
        s6-rc -v2 -d -O change "$prog"
        ;;
      restart)
        log "Restarting /service/$prog..."
        s6-rc -v2 -d -O change "$prog" &&
        s6-rc -v2 -u -O change "$prog"
        ;;
      powerdown)
        log "Error: powerdown not supported for '/service/$prog'"
        false
        ;;
    esac
    rv=$?
    continue  # found a match
  fi

  # Old-style services (/etc/init.d)
  prog=${prog#S??}
  lockfile-create --use-pid "/var/run/startstop.$prog"
  found=
  for script in /etc/init.d/S??$prog /etc/init.d/S??$prog.sh; do
    if [ -x "$script" ]; then
      found=1
      gsetsid "$script" "$mode" || rv=1
      break
    elif [ -e "$script" ] && endswith "$script" .sh; then
      found=1
      gsetsid /bin/sh "$script" "$mode" || rv=1
      break
    fi
  done
  if [ -z "$found" ] && [ -z "$QUIET" ]; then
    log "Error: no /etc/init.d or /service script matches '$prog'" >&2
    log "Error: suggestion:" $(suggestions "$prog")
    rv=1
  fi
  lockfile-remove "/var/run/startstop.$prog"
done

if [ -z "$any" ]; then
  usage
fi

exit $rv
