#!/usr/bin/env bash

set -e

DOTFILES_REPO=~/dotfiles
DRYRUN=0

# Parseo de dry-run
if [[ "$1" == "--dry-run" || "$1" == "-n" ]]; then
  DRYRUN=1
  shift
fi

if [ "$#" -ne 2 ]; then
  echo "Uso: $0 [--dry-run] <archivo-existente> <directorio-en-repo>"
  echo "Ejemplo: $0 .zshrc zsh"
  exit 1
fi

SRC_ORIGINAL="$1"
SUBDIR="$2"

# Obtener path absoluto del archivo origen
SRC="$(realpath "$SRC_ORIGINAL")"

# Obtener nombre relativo (ej: .zshrc o config/nvim/init.vim)
BASENAME=$(basename "$SRC_ORIGINAL")
DST_DIR="$DOTFILES_REPO/$SUBDIR"
DST="$DST_DIR/$BASENAME"

if [ ! -e "$SRC" ]; then
  echo "❌ El archivo $SRC no existe."
  exit 1
fi

if [ "$DRYRUN" -eq 1 ]; then
  echo "=== DRY RUN ==="
  echo "📁 Crear directorio si no existe: $DST_DIR"
  echo "📦 Mover: $SRC → $DST"
  echo "🔗 Ejecutar: (cd $DOTFILES_REPO && stow -nv $SUBDIR)"
else
  echo "📁 Creando directorio: $DST_DIR"
  mkdir -p "$DST_DIR"

  echo "📦 Moviendo archivo: $SRC → $DST"
  mv "$SRC" "$DST"

  echo "🔗 Ejecutando stow"
  cd "$DOTFILES_REPO"
  stow "$SUBDIR"

  echo "✅ Listo: $BASENAME stoweado."
fi
