class Kitsune::Kit::Commands::SetupSwap

def perform_setup(ssh, filled_options)

def perform_setup(ssh, filled_options)
  size_gb = filled_options[:swap_size_gb].to_i
  swappiness = filled_options[:swap_swappiness].to_i
  abort "❌ Invalid swap size" if size_gb <= 0
  script = <<~EOH
    set -e
    BACKUP_DIR="/usr/local/backups"
    MARKER_FILE="${BACKUP_DIR}/setup_swap.after"
    SWAPPINESS_BEFORE_FILE="${BACKUP_DIR}/setup_swap.swappiness.before"
    if [ -f "$MARKER_FILE" ]; then
      echo "🔁 Swap already set up, skipping."
      exit 0
    fi
    SWAPFILE="/swapfile"
    SIZE_GB=#{size_gb}
    SIZE_BYTES=$((SIZE_GB * 1024 * 1024 * 1024))
    echo "📝 Creating ${SIZE_GB}GB swap file..."
    sudo fallocate -l ${SIZE_BYTES} ${SWAPFILE}
    sudo chmod 600 ${SWAPFILE}
    sudo mkswap ${SWAPFILE}
    sudo swapon ${SWAPFILE}
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    # Backup swappiness if not already backed up
    if [ ! -f "$SWAPPINESS_BEFORE_FILE" ]; then
      CURRENT=$(cat /proc/sys/vm/swappiness)
      echo "$CURRENT" | sudo tee "$SWAPPINESS_BEFORE_FILE"
      echo "✍🏻 Backed up vm.swappiness: $CURRENT"
    fi
    echo "🛠️ Setting vm.swappiness=#{swappiness}"
    sudo sysctl vm.swappiness=#{swappiness}
    echo "vm.swappiness=#{swappiness}" | sudo tee -a /etc/sysctl.conf
    sudo mkdir -p "$BACKUP_DIR"
    sudo touch "$MARKER_FILE"
    echo "✅ Swap file created and swappiness set"
    free -h
  EOH
  say ssh.exec!(script)
end