49 lines
1.9 KiB
Bash
Executable File
49 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Installer for NetGescon repair UI systemd units (system-wide and user)
|
|
# Usage:
|
|
# sudo bash scripts/install-repair-service.sh # install system-wide service
|
|
# bash scripts/install-repair-service.sh --user # install user service
|
|
# bash scripts/install-repair-service.sh --cron-fallback # add @reboot cron fallback
|
|
|
|
BASE_DIR="/var/www/netgescon"
|
|
SYSTEMD_DIR="/etc/systemd/system"
|
|
USER_SYSTEMD_DIR="$HOME/.config/systemd/user"
|
|
|
|
if [[ "${1:-}" == "--help" ]]; then
|
|
sed -n '1,60p' "$0"; exit 0
|
|
fi
|
|
|
|
case "${1:-}" in
|
|
--user)
|
|
mkdir -p "$USER_SYSTEMD_DIR"
|
|
sed "s#@BASE_DIR@#$BASE_DIR#g" "$BASE_DIR/scripts/systemd/netgescon-repair-ui.user.service.template" > "$USER_SYSTEMD_DIR/netgescon-repair-ui.service"
|
|
systemctl --user daemon-reload
|
|
systemctl --user enable --now netgescon-repair-ui.service || true
|
|
systemctl --user status netgescon-repair-ui.service --no-pager --full | sed -n '1,100p' || true
|
|
;;
|
|
--cron-fallback)
|
|
TMP_CRON=$(mktemp)
|
|
crontab -l 2>/dev/null > "$TMP_CRON" || true
|
|
if ! grep -q 'netgescon-repair-ui.sh' "$TMP_CRON"; then
|
|
echo "@reboot /usr/bin/env bash -lc '/var/www/netgescon/scripts/repair-ui.sh || /home/michele/netgescon/scripts/repair-ui.sh || true'" >> "$TMP_CRON"
|
|
fi
|
|
crontab "$TMP_CRON"
|
|
rm -f "$TMP_CRON"
|
|
echo "Cron installed:"; crontab -l | sed -n '1,20p'
|
|
;;
|
|
*)
|
|
# system-wide
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "Please run as root or use sudo for system-wide install" >&2
|
|
exit 1
|
|
fi
|
|
sed "s#@BASE_DIR@#$BASE_DIR#g" "$BASE_DIR/scripts/systemd/netgescon-repair-ui.service.template" > "$SYSTEMD_DIR/netgescon-repair-ui.service"
|
|
systemctl daemon-reload
|
|
systemctl enable netgescon-repair-ui.service
|
|
systemctl start netgescon-repair-ui.service
|
|
systemctl status netgescon-repair-ui.service --no-pager --full | sed -n '1,100p'
|
|
;;
|
|
esac
|