#!/bin/bash
set -e

# nomarchy-refresh-config: Restore a specific configuration file to its stock version.
# Usage: nomarchy-refresh-config <relative-path-to-config>
# Example: nomarchy-refresh-config hypr/hyprland.conf

CONFIG_FILE=$1

if [[ -z $CONFIG_FILE ]]; then
    echo "Usage: nomarchy-refresh-config <config-path>"
    exit 1
fi

# Determine source directory (where stock configs are stored)
# In Nomarchy, we deploy them via Nix, but we also keep a copy in local share for easy access
STOCK_DIR="$HOME/.local/share/nomarchy/themes" # Fallback if specific config isn't themed
# Wait, actually we should use the one from /etc/nixos if available
STOCK_BASE="/etc/nixos/nomarchy/core/home/config"

if [ ! -d "$STOCK_BASE" ]; then
    # Fallback to local share if /etc/nixos is not available
    STOCK_BASE="$HOME/.local/share/nomarchy/config"
fi

SOURCE_FILE="$STOCK_BASE/$CONFIG_FILE"
DEST_FILE="$HOME/.config/$CONFIG_FILE"

if [ ! -f "$SOURCE_FILE" ]; then
    # Try searching in features/ as well
    STOCK_BASE="/etc/nixos/nomarchy/features"
    # Find the file in features
    SOURCE_FILE=$(find "$STOCK_BASE" -name "$(basename "$CONFIG_FILE")" | head -n 1)
fi

if [[ -n $SOURCE_FILE ]] && [[ -f "$SOURCE_FILE" ]]; then
    echo "Refreshing $DEST_FILE from stock $SOURCE_FILE..."
    mkdir -p "$(dirname "$DEST_FILE")"
    cp "$SOURCE_FILE" "$DEST_FILE"
    notify-send "Config Refreshed" "$CONFIG_FILE has been restored to defaults."
else
    echo "Error: Stock configuration for $CONFIG_FILE not found."
    notify-send -u critical "Error" "Stock configuration for $CONFIG_FILE not found."
    exit 1
fi
