#!/usr/bin/env bash
set -euo pipefail

apex_dist="${APEX_DIST_DIR:-$HOME/Dev/Themes/apex/dist}"

if [[ ! -d "$apex_dist" ]]; then
  echo "apex dist not found: $apex_dist" >&2
  exit 1
fi

source_dir="${CHEZMOI_SOURCE_DIR:-}"
if [[ -z "$source_dir" ]] && command -v chezmoi >/dev/null 2>&1; then
  source_dir="$(chezmoi source-path 2>/dev/null || true)"
fi
if [[ -z "$source_dir" ]] && [[ -d "./dot_config" ]]; then
  source_dir="$(pwd)"
fi
if [[ -z "$source_dir" ]]; then
  echo "could not determine chezmoi source dir (set CHEZMOI_SOURCE_DIR)" >&2
  exit 1
fi

mkdir -p "$source_dir/dot_config/alacritty/themes"
cp "$apex_dist/alacritty/"*.toml "$source_dir/dot_config/alacritty/themes/"

mkdir -p "$source_dir/dot_config/btop/themes"
cp "$apex_dist/btop/"*.theme "$source_dir/dot_config/btop/themes/"

mkdir -p "$source_dir/dot_config/fuzzel/themes"
for src in "$apex_dist"/fuzzel/*-fuzzel.ini; do
  base="$(basename "$src" -fuzzel.ini)"
  cp "$src" "$source_dir/dot_config/fuzzel/themes/${base}.ini"
done

mkdir -p "$source_dir/dot_config/gtk-4.0"
cp "$apex_dist/gtk4/gtk.css" "$source_dir/dot_config/gtk-4.0/gtk.css"

mkdir -p "$source_dir/dot_gemini/themes"
cp "$apex_dist/gemini/"*.json "$source_dir/dot_gemini/themes/"

mkdir -p "$source_dir/dot_config/ghostty/themes"
cp "$apex_dist/ghostty/"* "$source_dir/dot_config/ghostty/themes/"

mkdir -p "$source_dir/dot_config/hypr/hyprland.d"
for src in "$apex_dist"/hyprland/*-colors.conf; do
  base="$(basename "$src" -colors.conf)"
  cp "$src" "$source_dir/dot_config/hypr/hyprland.d/theme-${base}.conf"
done

mkdir -p "$source_dir/dot_config/kitty/themes"
cp "$apex_dist/kitty/"*.conf "$source_dir/dot_config/kitty/themes/"

mkdir -p "$source_dir/dot_config/nvim/colors"
cp "$apex_dist/nvim/colors/"*.lua "$source_dir/dot_config/nvim/colors/"

mkdir -p "$source_dir/dot_config/owlry/themes"
cp "$apex_dist/owlry/"*.css "$source_dir/dot_config/owlry/themes/"

mkdir -p "$source_dir/dot_config/sherlock/themes"
cp "$apex_dist/sherlock/"*.css "$source_dir/dot_config/sherlock/themes/"

mkdir -p "$source_dir/dot_config/spicetify/private_Themes/apex-neon"
cp "$apex_dist/spicetify/apex-neon-color.ini" "$source_dir/dot_config/spicetify/private_Themes/apex-neon/color.ini"
cp "$apex_dist/spicetify/apex-neon-user.css" "$source_dir/dot_config/spicetify/private_Themes/apex-neon/user.css"

mkdir -p "$source_dir/dot_config/spicetify/private_Themes/apex-aeon"
cp "$apex_dist/spicetify/apex-aeon-color.ini" "$source_dir/dot_config/spicetify/private_Themes/apex-aeon/color.ini"
cp "$apex_dist/spicetify/apex-aeon-user.css" "$source_dir/dot_config/spicetify/private_Themes/apex-aeon/user.css"

mkdir -p "$source_dir/dot_config/swaync/themes"
for src in "$apex_dist"/swaync/*-style.css; do
  base="$(basename "$src" -style.css)"
  cp "$src" "$source_dir/dot_config/swaync/themes/${base}.css"
done

mkdir -p "$source_dir/dot_config/waybar/themes"
for src in "$apex_dist"/waybar/*-colors.css; do
  base="$(basename "$src" -colors.css)"
  cp "$src" "$source_dir/dot_config/waybar/themes/${base}.css"
done

mkdir -p "$source_dir/dot_config/wezterm/colors"
cp "$apex_dist/wezterm/"*.toml "$source_dir/dot_config/wezterm/colors/"

mkdir -p "$source_dir/dot_config/zathura/themes"
for src in "$apex_dist"/zathura/*-zathurarc; do
  base="$(basename "$src" -zathurarc)"
  cp "$src" "$source_dir/dot_config/zathura/themes/${base}.zathurarc"
done

mkdir -p "$source_dir/dot_config/zed/themes"
cp "$apex_dist/zed/"*.json "$source_dir/dot_config/zed/themes/"

mkdir -p "$source_dir/dot_config/zsh"
for src in "$apex_dist"/zsh/*.zsh-theme; do
  base="$(basename "$src" .zsh-theme)"
  cp "$src" "$source_dir/dot_config/zsh/${base}.zsh"
done

printf "Refreshed apex themes from %s -> %s\n" "$apex_dist" "$source_dir"
