#!/bin/bash

# This script deploys ~/.local/share/omarchy/config/X/Y/Z -> ~/.config/X/Y/Z
config_file=$1

if [[ -z "$config_file" ]]; then
  cat <<USAGE
  Usage: $0 [config_file]

  Must provide a file path from the .config directory to be refreshed.
  To copy ~/.local/share/omarchy/config/hypr/hyprlock.conf to ~/.config/hypr/hyprlock.conf
    
    $0 hypr/hyprlock.conf     
USAGE
  exit 1
fi

# Backup the destination file (with timestamp) to avoid clobbering (Ex: hyprlock.conf.bak.1753817951)
user_config_file="${HOME}/.config/$config_file"
default_config_file="${HOME}/.local/share/omarchy/config/$config_file"
backup_config_file="$user_config_file.bak.$(date +%s)"

if [[ -f "$user_config_file" ]]; then
  # Create preliminary backup
  cp -f "$user_config_file" "$backup_config_file" 2>/dev/null

  # Replace config with new default
  cp -f "$default_config_file" "$user_config_file" 2>/dev/null

  # Compare and delete/inform accordingly
  if cmp -s "$user_config_file" "$backup_config_file"; then
    rm "$backup_config_file"
  else
    echo -e "\e[31mReplaced $user_config_file with new Omarchy default.\nSaved backup as ${backup_config_file}.\n\n\e[32mChanges:\e[0m"
    diff "$user_config_file" "$backup_config_file" || true
  fi
else
  # Config file did not exist already
  cp -f "$default_config_file" "$user_config_file" 2>/dev/null
fi
