#!/bin/sh
#Copyright: 2026 Aitor <aitor@genuen.org>
#License: CC0-1.0
#Comment: oneshot; invoke with: sv once halt

exec 2>&1

ebegin() { [ "${VERBOSE:-}" = no ] || echo "$@"; }
eend() { r=${1:-0}; shift || true; [ "$r" -eq 0 ] || [ "${VERBOSE:-}" = no ] || echo "$*" >&2; return "$r"; }
einfo() { [ "${VERBOSE:-}" = no ] || echo "$@"; }
ewarn() { echo "$@" >&2; }
eerror() { echo "$@" >&2; }

NETDOWN=yes
[ -f /etc/default/halt ] && . /etc/default/halt
. /lib/init/vars.sh

if [ "$INIT_HALT" = "" ]; then
	case "$HALT" in
	  [Pp]*) INIT_HALT=POWEROFF ;;
	  [Hh]*) INIT_HALT=HALT ;;
	  *) INIT_HALT=POWEROFF ;;
	esac
fi

if [ "$INIT_HALT" = "POWEROFF" ] && [ -x /etc/init.d/ups-monitor ]; then
	/etc/init.d/ups-monitor poweroff
fi

hddown="-h"
if grep -qs '^md.*active' /proc/mdstat; then
	hddown=""
fi

poweroff="-p"
if [ "$INIT_HALT" = "HALT" ]; then
	poweroff=""
fi

netdown="-i"
if [ "$NETDOWN" = "no" ]; then
	netdown=""
fi

einfo "Will now halt"
halt -d -f $netdown $poweroff $hddown
exit 0
