stowme 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env bash
  2. set -e
  3. DOTFILES_REPO=~/dotfiles
  4. DRYRUN=0
  5. # Parseo de dry-run
  6. if [[ "$1" == "--dry-run" || "$1" == "-n" ]]; then
  7. DRYRUN=1
  8. shift
  9. fi
  10. if [ "$#" -ne 2 ]; then
  11. echo "Uso: $0 [--dry-run] <archivo-existente> <directorio-en-repo>"
  12. echo "Ejemplo: $0 .zshrc zsh"
  13. exit 1
  14. fi
  15. SRC_ORIGINAL="$1"
  16. SUBDIR="$2"
  17. # Obtener path absoluto del archivo origen
  18. SRC="$(realpath "$SRC_ORIGINAL")"
  19. # Obtener nombre relativo (ej: .zshrc o config/nvim/init.vim)
  20. BASENAME=$(basename "$SRC_ORIGINAL")
  21. DST_DIR="$DOTFILES_REPO/$SUBDIR"
  22. DST="$DST_DIR/$BASENAME"
  23. if [ ! -e "$SRC" ]; then
  24. echo "❌ El archivo $SRC no existe."
  25. exit 1
  26. fi
  27. if [ "$DRYRUN" -eq 1 ]; then
  28. echo "=== DRY RUN ==="
  29. echo "📁 Crear directorio si no existe: $DST_DIR"
  30. echo "📦 Mover: $SRC → $DST"
  31. echo "🔗 Ejecutar: (cd $DOTFILES_REPO && stow -nv $SUBDIR)"
  32. else
  33. echo "📁 Creando directorio: $DST_DIR"
  34. mkdir -p "$DST_DIR"
  35. echo "📦 Moviendo archivo: $SRC → $DST"
  36. mv "$SRC" "$DST"
  37. echo "🔗 Ejecutando stow"
  38. cd "$DOTFILES_REPO"
  39. stow "$SUBDIR"
  40. echo "✅ Listo: $BASENAME stoweado."
  41. fi