feat: agregar agente build-wails para apps desktop
Nuevo agente para crear y compilar aplicaciones Wails (Go + React). Soporta compilación cross-platform: Linux, Windows, macOS. Incluye script de creación de proyecto con DevFactory y frontend-lib integrados.
This commit is contained in:
@@ -0,0 +1,210 @@
|
||||
#!/bin/bash
|
||||
# Script para crear un nuevo proyecto Wails con DevFactory + Frontend_Library
|
||||
# Uso: ./create-wails-project.sh <nombre-proyecto> [directorio-destino]
|
||||
|
||||
set -e
|
||||
|
||||
# ============================================
|
||||
# CONFIGURACIÓN
|
||||
# ============================================
|
||||
PROJECT_NAME="${1:-mi-wails-app}"
|
||||
DEST_DIR="${2:-.}"
|
||||
FULL_PATH="$DEST_DIR/$PROJECT_NAME"
|
||||
|
||||
DEVFACTORY_PATH="$HOME/.local_agentes/backend"
|
||||
FRONTEND_LIB_PATH="$HOME/.local_agentes/frontend/frontend"
|
||||
TEMPLATES_PATH="$(dirname "$0")"
|
||||
|
||||
# Colores
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() { echo -e "${GREEN}[✓]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
|
||||
error() { echo -e "${RED}[✗]${NC} $1"; exit 1; }
|
||||
info() { echo -e "${BLUE}[i]${NC} $1"; }
|
||||
|
||||
# ============================================
|
||||
# VALIDACIONES
|
||||
# ============================================
|
||||
info "Verificando requisitos..."
|
||||
|
||||
if ! command -v wails &> /dev/null; then
|
||||
error "Wails no está instalado. Ejecuta: go install github.com/wailsapp/wails/v2/cmd/wails@latest"
|
||||
fi
|
||||
|
||||
if ! command -v pnpm &> /dev/null; then
|
||||
error "pnpm no está instalado. Ejecuta: npm install -g pnpm"
|
||||
fi
|
||||
|
||||
if [ -d "$FULL_PATH" ]; then
|
||||
error "El directorio $FULL_PATH ya existe"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# CREAR PROYECTO
|
||||
# ============================================
|
||||
info "Creando proyecto Wails: $PROJECT_NAME"
|
||||
|
||||
# Crear proyecto base con Wails
|
||||
wails init -n "$PROJECT_NAME" -t react-ts -d "$DEST_DIR"
|
||||
|
||||
cd "$FULL_PATH"
|
||||
|
||||
log "Proyecto base creado"
|
||||
|
||||
# ============================================
|
||||
# CONFIGURAR GO.WORK (DevFactory)
|
||||
# ============================================
|
||||
info "Configurando go.work para DevFactory..."
|
||||
|
||||
if [ -d "$DEVFACTORY_PATH" ]; then
|
||||
go work init
|
||||
go work use . "$DEVFACTORY_PATH"
|
||||
log "go.work configurado con DevFactory"
|
||||
else
|
||||
warn "DevFactory no encontrado en $DEVFACTORY_PATH"
|
||||
warn "Configúralo manualmente con: go work use ~/.local_agentes/backend"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# CONFIGURAR FRONTEND
|
||||
# ============================================
|
||||
info "Configurando frontend..."
|
||||
|
||||
cd frontend
|
||||
|
||||
# Cambiar a pnpm
|
||||
rm -f package-lock.json yarn.lock
|
||||
pnpm install
|
||||
|
||||
# Agregar frontend-lib si existe
|
||||
if [ -d "$FRONTEND_LIB_PATH" ]; then
|
||||
pnpm add "@anthropic/frontend-lib@link:$FRONTEND_LIB_PATH"
|
||||
log "frontend-lib vinculado"
|
||||
else
|
||||
warn "Frontend_Library no encontrado en $FRONTEND_LIB_PATH"
|
||||
fi
|
||||
|
||||
cd ..
|
||||
|
||||
# ============================================
|
||||
# ACTUALIZAR wails.json
|
||||
# ============================================
|
||||
info "Actualizando wails.json..."
|
||||
|
||||
cat > wails.json << EOF
|
||||
{
|
||||
"\$schema": "https://wails.io/schemas/config.v2.json",
|
||||
"name": "$PROJECT_NAME",
|
||||
"outputfilename": "$PROJECT_NAME",
|
||||
"frontend:dir": "frontend",
|
||||
"frontend:install": "pnpm install",
|
||||
"frontend:build": "pnpm build",
|
||||
"frontend:dev:watcher": "pnpm dev",
|
||||
"frontend:dev:serverUrl": "auto",
|
||||
"wailsjsdir": "frontend/src/wailsjs",
|
||||
"author": {
|
||||
"name": "$(git config user.name 2>/dev/null || echo 'Developer')",
|
||||
"email": "$(git config user.email 2>/dev/null || echo 'dev@example.com')"
|
||||
},
|
||||
"info": {
|
||||
"companyName": "$PROJECT_NAME",
|
||||
"productName": "$PROJECT_NAME",
|
||||
"productVersion": "1.0.0",
|
||||
"copyright": "Copyright $(date +%Y)",
|
||||
"comments": "Built with Wails"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
log "wails.json actualizado para pnpm"
|
||||
|
||||
# ============================================
|
||||
# COPIAR MAKEFILE
|
||||
# ============================================
|
||||
if [ -f "$TEMPLATES_PATH/Makefile" ]; then
|
||||
cp "$TEMPLATES_PATH/Makefile" ./Makefile
|
||||
log "Makefile copiado"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# CREAR .gitignore
|
||||
# ============================================
|
||||
cat > .gitignore << 'EOF'
|
||||
# Build
|
||||
build/bin/
|
||||
frontend/dist/
|
||||
|
||||
# Dependencies
|
||||
frontend/node_modules/
|
||||
|
||||
# Go
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
*.test
|
||||
*.out
|
||||
vendor/
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Wails
|
||||
frontend/src/wailsjs/
|
||||
|
||||
# Env
|
||||
.env
|
||||
.env.local
|
||||
EOF
|
||||
|
||||
log ".gitignore creado"
|
||||
|
||||
# ============================================
|
||||
# INICIALIZAR GIT
|
||||
# ============================================
|
||||
if [ ! -d ".git" ]; then
|
||||
git init
|
||||
git add .
|
||||
git commit -m "feat: initial Wails project with DevFactory + Frontend_Library"
|
||||
log "Repositorio Git inicializado"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# RESUMEN
|
||||
# ============================================
|
||||
echo ""
|
||||
echo -e "${GREEN}═══════════════════════════════════════════════════════════════${NC}"
|
||||
echo -e "${GREEN} Proyecto Wails creado exitosamente!${NC}"
|
||||
echo -e "${GREEN}═══════════════════════════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
echo -e " ${BLUE}Directorio:${NC} $FULL_PATH"
|
||||
echo ""
|
||||
echo -e " ${BLUE}Comandos disponibles:${NC}"
|
||||
echo -e " make dev - Desarrollo con hot reload"
|
||||
echo -e " make build - Build para plataforma actual"
|
||||
echo -e " make build-linux - Build para Linux"
|
||||
echo -e " make build-windows - Build para Windows"
|
||||
echo -e " make build-all - Build para todas las plataformas"
|
||||
echo -e " make help - Ver todos los comandos"
|
||||
echo ""
|
||||
echo -e " ${BLUE}Próximos pasos:${NC}"
|
||||
echo -e " cd $FULL_PATH"
|
||||
echo -e " make dev"
|
||||
echo ""
|
||||
|
||||
# Verificar wails doctor
|
||||
info "Ejecutando wails doctor..."
|
||||
wails doctor || warn "Algunos requisitos pueden faltar. Revisa la salida anterior."
|
||||
Reference in New Issue
Block a user