1529e55d25
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.
211 lines
5.5 KiB
Bash
Executable File
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."
|