#!/usr/bin/env bash

# --- Helper functions ---
log() { echo -e "\033[1;34m[INFO]\033[0m $*"; }

# Define paths as they have not been defined by new bashrc yet!
PANAMA_PATH="${PANAMA_PATH:-$HOME/.local/share/Panama}"
PANAMA_BASH="${PANAMA_BASH:-$PANAMA_PATH/config/bash}"
PANAMA_DOT="$PANAMA_PATH/config/dot"
PANAMA_OLD="$PANAMA_PATH/config/old"
CONFIG="$HOME/.config"

# Make backup folder if it doesn't exist
mkdir -p "$PANAMA_OLD"

# --- Bashrc ---
echo -e "\n--- Replacing .bashrc ---"
# Backup existing .bashrc if it's a regular file
if [ -f "$HOME/.bashrc" ] && [ ! -L "$HOME/.bashrc" ]; then
  log "Backing up existing .bashrc"
  mv "$HOME/.bashrc" "$PANAMA_OLD/.bashrc"
fi
# Remove old symlink if it exists and points somewhere else
if [ -L "$HOME/.bashrc" ]; then
  log "Removing old .bashrc symlink"
  rm "$HOME/.bashrc"
fi
# Symlink Panama .bashrc file to ~/.bashrc
log "Symlinking Panama .bashrc file to ~/.bashrc"
ln -s "$PANAMA_BASH/.bashrc" "$HOME/.bashrc"

dirs=("espanso" "forge" "ghostty" "kitty" "nvim" "tmux")

# --- Vim vimrc ---
echo -e "\n--- Setting up vim ---"
mkdir -p "$HOME/.vim"
if [ -L "$HOME/.vim/vimrc" ]; then
  rm "$HOME/.vim/vimrc"
  log "Removed old symlink at ~/.vim/vimrc"
fi
if [ -f "$HOME/.vim/vimrc" ]; then
  mv "$HOME/.vim/vimrc" "$PANAMA_OLD/vimrc"
  log "Moved existing ~/.vim/vimrc to $PANAMA_OLD/vimrc"
fi
ln -s "$PANAMA_DOT/vim/vimrc" "$HOME/.vim/vimrc"
log "Linked $PANAMA_DOT/vim/vimrc → ~/.vim/vimrc"

for dir in "${dirs[@]}"; do
  echo -e "\n--- Setting up $dir ---"

  # Remove old symlink if it exists
  if [ -L "$CONFIG/$dir" ]; then
    rm "$CONFIG/$dir"
    log "Removed old symlink at $CONFIG/$dir"
  fi

  # Backup existing directory if it exists
  if [ -d "$CONFIG/$dir" ]; then
    mv "$CONFIG/$dir" "$PANAMA_OLD/$dir"
    log "Moved existing $dir config to $PANAMA_OLD/$dir"
  fi

  # Create symlink
  ln -s "$PANAMA_DOT/$dir" "$CONFIG/$dir"
  log "Linked $PANAMA_DOT/$dir → $CONFIG/$dir"
done
