Files
repo_Claude/.claude/agents/build-wails/templates/create-wails-project.sh
T
egutierrez 1529e55d25 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.
2026-03-22 19:00:07 +01:00

211 lines
5.5 KiB
Bash
Executable File

#!/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."