#!/bin/bash

# Argument check
if [ "$#" -ne 2 ]; then
  echo "Usage: $0 <serial_number> <symlink_name>"
  echo "  <serial_number> : The serial number of your USB-Serial troubleshooter (e.g., 001A02F2046C)"
  echo "  <symlink_name>  : The name to create as a symbolic link in /dev (e.g., usb_serial_troubleshooter1)"
  exit 1
fi

SERIAL_NUMBER="$1"
SYMLINK_NAME="$2"

RULES_DIR="/etc/udev/rules.d"
TEMPLATE_PATH="$(rospack find power_switching_tools_ros)/udev/90-usb-serial-troubleshooter.rules.template"
RULES_PATH="$RULES_DIR/90-usb-serial-troubleshooter.rules"

echo ""
echo "This script generates udev rules for USB-Serial troubleshooter"
echo "Serial number : $SERIAL_NUMBER"
echo "Symlink name  : $SYMLINK_NAME"
echo "Output file   : $RULES_PATH"
echo ""

NEW_RULE=$(sed \
  -e "s|{{SERIAL}}|$SERIAL_NUMBER|" \
  -e "s|{{SYMLINK}}|$SYMLINK_NAME|" \
  "$TEMPLATE_PATH")

# Check existing file
if [ -f "$RULES_PATH" ]; then
  echo "The file $RULES_PATH already exists. Current contents:"
  echo "--------------------------------------------------"
  cat "$RULES_PATH"
  echo "--------------------------------------------------"
  echo "How would you like to proceed?"
  echo "  [o] Overwrite"
  echo "  [a] Append"
  echo "  [c] Cancel"
  read -p "Enter your choice [o/a/c]: " USER_CHOICE

  case "$USER_CHOICE" in
    [oO])
      echo "Overwriting $RULES_PATH..."
      echo "$NEW_RULE" | sudo tee "$RULES_PATH" > /dev/null
      ;;
    [aA])
      echo "Appending to $RULES_PATH..."
      echo "$NEW_RULE" | sudo tee -a "$RULES_PATH" > /dev/null
      ;;
    *)
      echo "Operation cancelled."
      exit 0
      ;;
  esac
else
  echo "Creating new rules file..."
  echo "$NEW_RULE" | sudo tee "$RULES_PATH" > /dev/null
fi

echo ""
echo "Restarting udev"
echo ""
sudo udevadm control --reload
sudo udevadm trigger

echo "udev rules installed"
