#!/bin/bash

# Ensure script is run as root
if [ "$EUID" -ne 0 ]; then
  echo "Error: Please run this script with sudo or as root."
  exit 1
fi

SCRIPT_PATH="/usr/local/bin/usb-clean-shutdown.sh"
RULE_PATH="/etc/udev/rules.d/90-raspi-shutdown.rules"

echo "=== Installing RASPI-CLEAN-SHUTDOWN Trigger ==="

# 1. Create or overwrite the script
if [ -f "$SCRIPT_PATH" ]; then
    read -p "Script $SCRIPT_PATH already exists. Overwrite? [y/N]: " choice
    case "$choice" in 
      [yY][eE][sS]|[yY]) 
        echo "Overwriting script..."
        ;;
      *)
        echo "Skipping script creation."
        CREATE_SCRIPT=false
        ;;
    esac
fi

if [ "$CREATE_SCRIPT" != false ]; then
    cat << 'EOF' > "$SCRIPT_PATH"
#!/bin/bash

# Log the event to syslog with a distinct tag and severity level
/usr/bin/logger -t raspi-shutdown -p authpriv.notice "USB Stick RASPI-CLEAN-SHUTDOWN detected. Initiating system shutdown now..."

# Trigger an immediate graceful shutdown
/sbin/shutdown -h now
EOF

    chmod +x "$SCRIPT_PATH"
    echo "[✓] Created executable script at $SCRIPT_PATH"
fi

# 2. Create or overwrite the udev rule
if [ -f "$RULE_PATH" ]; then
    read -p "Udev rule $RULE_PATH already exists. Overwrite? [y/N]: " choice
    case "$choice" in 
      [yY][eE][sS]|[yY]) 
        echo "Overwriting udev rule..."
        ;;
      *)
        echo "Skipping udev rule creation."
        CREATE_RULE=false
        ;;
    esac
fi

if [ "$CREATE_RULE" != false ]; then
    cat << 'EOF' > "$RULE_PATH"
ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="RASPI-CLEAN-SHUTDOWN", RUN+="/usr/local/bin/usb-clean-shutdown.sh"
EOF
    echo "[✓] Created udev rule at $RULE_PATH"
fi

# 3. Reload udev rules
echo "Reloading udev daemon..."
udevadm control --reload-rules && udevadm trigger

echo "=== Installation complete! ==="
echo "Plugging in a USB stick labeled 'RASPI-CLEAN-SHUTDOWN' will now trigger a shutdown."
