Files
2026-05-02 19:08:26 -07:00

96 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -u
while [[ "${1:-}" == --* ]]; do
case "$1" in
--root=*|--system|--user|--global|--preset-mode=*|--no-reload|--no-ask-password|--quiet)
shift
;;
--)
shift
break
;;
*)
break
;;
esac
done
service_dir() {
local name="${1%.service}"
case "$name" in
magic) name=magic ;;
comma) name=comma ;;
ssh|sshd) name=ssh ;;
adbd) name=adbd ;;
esac
if [ -d "/run/runit/services/$name" ]; then
printf '/run/runit/services/%s\n' "$name"
else
printf '/usr/comma/runit/services/%s\n' "$name"
fi
}
case "${1:-}" in
"")
exit 0
;;
daemon-reload|daemon-reexec|preset|preset-all|enable|disable|reenable|mask|unmask|try-reload-or-restart|reload)
exit 0
;;
esac
if [ "${1:-}" = "is-enabled" ]; then
exit 1
fi
if [ "${1:-}" = "daemon-reload" ]; then
exit 0
fi
if [ "${1:-}" = "is-active" ] && [ "${2:-}" = "--quiet" ]; then
case "${3:-}" in
magic|magic.service)
pgrep -u comma -f "/usr/comma/magic.py" >/dev/null 2>&1 && [ -S /tmp/drmfd.sock ] && exit 0
exit 3
;;
comma|comma.service)
/usr/bin/tmux has-session -t comma >/dev/null 2>&1 && exit 0
exit 3
;;
esac
sv status "$(service_dir "${3:-}")" >/dev/null 2>&1 && exit 0
exit 3
fi
case "${1:-}" in
start)
exec sv up "$(service_dir "${2:-}")"
;;
stop)
exec sv down "$(service_dir "${2:-}")"
;;
restart)
exec sv restart "$(service_dir "${2:-}")"
;;
kill)
signal=TERM
shift
if [[ "${1:-}" == --signal=* ]]; then
signal="${1#--signal=}"
shift
fi
name="${1:-}"
if [ "${name%.service}" = "comma" ]; then
pkill "-$signal" -f "/usr/comma/comma.sh" 2>/dev/null || true
pkill "-$signal" -f "tmux new-session -s comma" 2>/dev/null || true
exit 0
fi
exec sv force-stop "$(service_dir "$name")"
;;
esac
echo "systemctl shim: unsupported command: $*" >&2
exit 1