#!/bin/bash

# Copies the named config from ~/.local/share/omarchy/config/X/Y/Z -> ~/.config/X/Y/Z.
# If the config already exists, a backup of the existing will be taken as .bak.TIMESTAMP.

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
