taskfile para instalar todos los programas en linux ya tengo una version en formato bash en la carpeta linux este es la version en taskfile

PHOTO EMBED

Mon Dec 08 2025 14:10:49 GMT+0000 (Coordinated Universal Time)

Saved by @jrg_300i #yii2

version: '3'

# Variables globales
vars:
  SCRIPT_NAME: setup-dev.sh
  LOG_FILE: setup.log

# Entorno de ejecución
env:
  DEBIAN_FRONTEND: noninteractive

tasks:
  # ============================================
  # TAREA POR DEFECTO - MOSTRAR AYUDA
  # ============================================
  default:
    desc: "Muestra ayuda de tareas disponibles"
    cmds:
      - task --list-all

  # ============================================
  # TAREAS PRINCIPALES
  # ============================================
  all:
    desc: "Ejecuta todo el proceso de instalación completo"
    deps: [dependencies, tools, php, database, terminal, nodejs, finalize]
    cmds:
      - echo "✅ Instalación completa finalizada"
      - echo "📋 Resumen en: {{.LOG_FILE}}"

  quick:
    desc: "Instalación rápida (solo herramientas esenciales)"
    deps: [update-system, git, vscode, chrome, python, terminal-basics]
    cmds:
      - echo "✅ Instalación rápida completada"

  # ============================================
  # TAREAS POR SECCIONES
  # ============================================
  update-system:
    desc: "Actualizar sistema y dependencias básicas"
    cmds:
      - echo "🔄 Actualizando sistema..."
      - sudo apt update && sudo apt upgrade -y || true
      - sudo apt install -y wget curl gpg gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release || true

  git:
    desc: "Instalar Git"
    cmds:
      - echo "📦 Instalando Git..."
      - sudo apt install -y git || true
      - git --version || echo "Git no se pudo instalar"

  vscode:
    desc: "Instalar VS Code"
    cmds:
      - |
        echo "💻 Instalando VS Code..."
        if ! command -v code &> /dev/null; then
          sudo mkdir -p /etc/apt/keyrings
          curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /etc/apt/keyrings/packages.microsoft.gpg
          echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
          sudo apt update
          sudo apt install -y code || true
        else
          echo "VS Code ya está instalado"
        fi

  chrome:
    desc: "Instalar Google Chrome"
    cmds:
      - |
        echo "🌐 Instalando Google Chrome..."
        if ! command -v google-chrome-stable &> /dev/null && ! command -v google-chrome &> /dev/null; then
          sudo mkdir -p /etc/apt/keyrings
          curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /etc/apt/keyrings/google-chrome.gpg
          echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg] https://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
          sudo apt update
          sudo apt install -y google-chrome-stable || true
        else
          echo "Google Chrome ya está instalado"
        fi

  python:
    desc: "Instalar Python y herramientas"
    cmds:
      - echo "🐍 Instalando Python..."
      - sudo apt install -y python3 python3-pip python3-venv build-essential || true
      - python3 --version || echo "Python no se pudo instalar"

  # ============================================
  # GRUPOS DE TAREAS
  # ============================================
  dependencies:
    desc: "Instalar dependencias del sistema"
    cmds:
      - task: update-system
      - task: git

  tools:
    desc: "Instalar herramientas de desarrollo"
    cmds:
      - task: vscode
      - task: chrome
      - task: python

  php:
    desc: "Instalar PHP y Composer"
    cmds:
      - |
        echo "🐘 Instalando PHP..."
        sudo add-apt-repository ppa:ondrej/php -y
        sudo apt update
        
        # Instalar PHP 8.4
        sudo apt install -y php8.4 php8.4-pgsql php8.4-cli php8.4-fpm php8.4-mysql php8.4-zip \
          php8.4-gd php8.4-mbstring php8.4-curl php8.4-xml php8.4-bcmath || true
        
        # Configurar PHP 8.4 como predeterminado
        sudo update-alternatives --set php /usr/bin/php8.4 2>/dev/null || true
        
        # Instalar Composer
        if ! command -v composer &> /dev/null; then
          php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
          sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
          php -r "unlink('composer-setup.php');"
        fi

  database:
    desc: "Instalar bases de datos y herramientas"
    cmds:
      - |
        echo "🗄️ Instalando PostgreSQL..."
        sudo apt install -y postgresql postgresql-contrib || true
        
        echo "🔧 Instalando pgAdmin4..."
        sudo apt install -y pgadmin4-desktop || true
        
        echo "🌐 Instalando Apache2..."
        sudo apt install -y apache2 || true

  terminal:
    desc: "Configurar terminal con Zsh y plugins"
    cmds:
      - |
        echo "💻 Configurando terminal..."
        
        # Instalar Zsh
        sudo apt install -y zsh || true
        
        # Instalar Oh My Zsh
        if [ ! -d "$HOME/.oh-my-zsh" ]; then
          sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended || true
        fi
        
        # Instalar Powerlevel10k
        if [ ! -d "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" ]; then
          git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" || true
        fi
        
        # Instalar plugins
        if [ ! -d "${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" ]; then
          git clone https://github.com/zsh-users/zsh-autosuggestions "${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" || true
        fi
        
        if [ ! -d "${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting" ]; then
          git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting" || true
        fi

  terminal-basics:
    desc: "Instalación básica de terminal"
    cmds:
      - echo "🖥️ Instalando herramientas de terminal..."
      - sudo apt install -y zsh yakuake || true

  nodejs:
    desc: "Instalar Node.js y NVM"
    cmds:
      - |
        echo "⬢ Instalando Node.js..."
        if [ ! -d "$HOME/.nvm" ]; then
          curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
          
          # Cargar NVM temporalmente
          export NVM_DIR="$HOME/.nvm"
          [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
          
          # Instalar Node.js
          nvm install 22
          nvm use 22
          nvm alias default 22
        fi

  # ============================================
  # TAREAS DE UTILIDAD
  # ============================================
  run-script:
    desc: "Ejecutar el script bash original completo"
    cmds:
      - |
        if [ -f "{{.SCRIPT_NAME}}" ]; then
          echo "🚀 Ejecutando script original..."
          chmod +x {{.SCRIPT_NAME}}
          ./{{.SCRIPT_NAME}} | tee {{.LOG_FILE}}
        else
          echo "❌ Archivo {{.SCRIPT_NAME}} no encontrado"
          echo "   Copia tu script bash a este directorio o actualiza la variable SCRIPT_NAME"
        fi

  run-step:
    desc: "Ejecutar un paso específico del script original"
    vars:
      STEP:
        sh: "echo 'Ingresa el número del paso (1-25): ' && read step && echo $step"
    cmds:
      - |
        echo "🔧 Ejecutando paso {{.STEP}}..."
        # Esta es una implementación básica, puedes expandirla según tus necesidades
        case "{{.STEP}}" in
          1) echo "Actualizando sistema..." && sudo apt update && sudo apt upgrade -y ;;
          2) echo "Instalando dependencias..." && sudo apt install -y wget curl gpg gnupg2 software-properties-common ;;
          *) echo "Paso {{.STEP}} no implementado" ;;
        esac

  check:
    desc: "Verificar instalaciones"
    cmds:
      - |
        echo "🔍 Verificando instalaciones..."
        echo ""
        echo "=== VERSIONES INSTALADAS ==="
        command -v git >/dev/null && echo "✅ Git: $(git --version)" || echo "❌ Git: No instalado"
        command -v php >/dev/null && echo "✅ PHP: $(php --version | head -n1)" || echo "❌ PHP: No instalado"
        command -v python3 >/dev/null && echo "✅ Python: $(python3 --version)" || echo "❌ Python: No instalado"
        command -v node >/dev/null && echo "✅ Node.js: $(node --version)" || echo "❌ Node.js: No instalado"
        command -v zsh >/dev/null && echo "✅ Zsh: $(zsh --version)" || echo "❌ Zsh: No instalado"
        [ -d "$HOME/.oh-my-zsh" ] && echo "✅ Oh My Zsh: Instalado" || echo "❌ Oh My Zsh: No instalado"
        command -v code >/dev/null && echo "✅ VS Code: Instalado" || echo "❌ VS Code: No instalado"
        command -v psql >/dev/null && echo "✅ PostgreSQL: Instalado" || echo "❌ PostgreSQL: No instalado"

  finalize:
    desc: "Pasos finales de configuración"
    cmds:
      - |
        echo "🎯 Pasos finales:"
        echo "1. Para usar Zsh como shell predeterminado:"
        echo "   chsh -s $(which zsh)"
        echo ""
        echo "2. Para configurar Powerlevel10k:"
        echo "   p10k configure"
        echo ""
        echo "3. Recargar configuración:"
        echo "   source ~/.zshrc"
        echo ""
        echo "4. Para ver alias personalizados:"
        echo "   cat ~/.zshrc | grep '^alias'"

  clean:
    desc: "Limpiar archivos temporales"
    cmds:
      - echo "🧹 Limpiando archivos temporales..."
      - rm -f {{.LOG_FILE}} composer-setup.php 2>/dev/null || true
      - echo "✅ Limpieza completada"

  # ============================================
  # FLUJOS DE TRABAJO ESPECÍFICOS
  # ============================================
  web-dev:
    desc: "Configuración para desarrollo web"
    deps: [dependencies, php, database, nodejs]
    cmds:
      - echo "✅ Entorno web listo para PHP, Node.js y PostgreSQL"

  terminal-setup:
    desc: "Configurar terminal personalizado"
    deps: [terminal-basics, terminal]
    cmds:
      - echo "✅ Terminal personalizado configurado"
      - echo "🔧 Ejecuta 'task finalize' para completar la configuración"

  minimal:
    desc: "Instalación mínima para empezar"
    cmds:
      - task: update-system
      - task: git
      - task: vscode
      - task: terminal-basics
      - echo "✅ Instalación mínima completada"

  # ============================================
  # TAREAS DE MANTENIMIENTO
  # ============================================
  fix-permissions:
    desc: "Corregir permisos de archivos"
    cmds:
      - echo "🔧 Corrigiendo permisos..."
      - chmod +x {{.SCRIPT_NAME}} 2>/dev/null || true
      - chmod 644 Taskfile.yml 2>/dev/null || true
      - echo "✅ Permisos corregidos"

  backup-zsh:
    desc: "Crear backup de configuración Zsh"
    cmds:
      - |
        echo "💾 Creando backup de Zsh..."
        BACKUP_DIR="zsh-backup-$(date +%Y%m%d_%H%M%S)"
        mkdir -p "$BACKUP_DIR"
        cp -r ~/.zshrc ~/.oh-my-zsh "$BACKUP_DIR"/ 2>/dev/null || true
        echo "✅ Backup creado en: $BACKUP_DIR"
content_copyCOPY