mirror of
https://github.com/commaai/agnos-builder.git
synced 2026-08-06 16:55:45 +08:00
96 lines
1.9 KiB
Bash
Executable File
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
|