Skip to content

Instantly share code, notes, and snippets.

@Miuler
Last active July 18, 2025 07:05
Show Gist options
  • Save Miuler/a8c2b581ebcaa0254350e528a009bb0e to your computer and use it in GitHub Desktop.
Save Miuler/a8c2b581ebcaa0254350e528a009bb0e to your computer and use it in GitHub Desktop.
# Define el comando "pullall" que busca y actualiza repositorios Git en subdirectorios.
def "fetchall" [] {
# 1. Busca recursivamente todos los directorios '.git' desde la ubicación actual.
# '**' es un comodín que significa "en cualquier subdirectorio".
# Luego, obtiene el directorio padre de cada '.git' encontrado, que es la raíz del repositorio.
print $"🔎 Buscando repositorios de Git en subdirectorios..."
let repo_paths = (glob -F '**/.git' | path dirname)
# Verifica si se encontró algún repositorio.
if ($repo_paths | is-empty) {
print "❌ No se encontraron repositorios de Git en los subdirectorios."
return
}
print $"✅ Se encontraron ($repo_paths | length) repositorios. Actualizando..."
# 2. Itera sobre cada ruta de repositorio encontrada.
$repo_paths | each { |repo_path|
print $"\n--- 📂 Actualizando en: ($repo_path) ---"
# 3. Usa un bloque 'try/catch' para manejar errores de forma segura.
# Si 'git pull' falla en un repo, el script no se detendrá, sino que continuará con el siguiente.
try {
# Ejecuta los comandos dentro del directorio del repositorio sin cambiar
# permanentemente el directorio actual de tu terminal.
do -i {
cd $repo_path
git fetch --all
}
} catch {
print $"⚠️ Error al actualizar '($repo_path)'. Revisa el repositorio manualmente."
}
}
print "\n🎉 Proceso completado."
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment