# 🆘 Troubleshooting: create-complete-project.sh

## 🔍 Problemas Comunes y Soluciones

### Error: "jq no está instalado"

**Síntoma:**
```
[ERROR] jq no está instalado. Es necesario para usar archivos JSON.
```

**Solución:**
```bash
# macOS
brew install jq

# Linux
sudo apt-get install jq

# Verificar instalación
jq --version
```

---

### Error: "El archivo JSON no es válido"

**Síntoma:**
```
[ERROR] El archivo JSON no es válido: mi-proyecto.json
```

**Solución:**

1. **Validar JSON:**
```bash
jq empty mi-proyecto.json
```

2. **Verificar sintaxis:**
   - Comas correctas
   - Comillas dobles en strings
   - Llaves y corchetes balanceados

3. **Usar un validador online:**
   - https://jsonlint.com/

---

### Error: "El nombre del proyecto solo puede contener letras, números, guiones y guiones bajos"

**Síntoma:**
```
[ERROR] El nombre del proyecto solo puede contener letras, números, guiones y guiones bajos
```

**Solución:**

✅ **Nombres válidos:**
- `mi-proyecto`
- `proyecto_2024`
- `miProyecto123`

❌ **Nombres inválidos:**
- `Mi Proyecto` (espacios)
- `mi@proyecto` (caracteres especiales)
- `mi/proyecto` (barras)

---

### Error: "APPLICATION IN PRODUCTION"

**Síntoma:**
```
                           APPLICATION IN PRODUCTION.

  Do you really wish to run this command? (yes/no) [no]
```

**Causa:** El script detectó `APP_ENV=production` en `.env`

**Solución:**

El script ahora configura automáticamente `APP_ENV=local` en local. Si persiste:

1. **Verificar `.env`:**
```bash
cd /Applications/XAMPP/xamppfiles/htdocs/mi-proyecto
grep APP_ENV .env
# Debe mostrar: APP_ENV=local
```

2. **Corregir manualmente:**
```bash
sed -i '' 's/^APP_ENV=.*/APP_ENV=local/' .env
```

3. **Verificar que no sea cPanel:**
   - El script detecta cPanel automáticamente
   - En local, `IS_CPANEL` debe ser `false`

---

### Error: "Access denied for user ''@'localhost'"

**Síntoma:**
```
SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'bewpro-mi-proyecto'
```

**Causa:** Credenciales de BD vacías o incorrectas

**Solución:**

1. **Verificar `.env`:**
```bash
grep DB_ .env
# Debe mostrar:
# DB_USERNAME=root
# DB_PASSWORD=
```

2. **Corregir manualmente:**
```bash
sed -i '' 's/^DB_USERNAME=.*/DB_USERNAME=root/' .env
sed -i '' 's/^DB_PASSWORD=.*/DB_PASSWORD=/' .env
```

3. **Verificar que MySQL esté corriendo:**
```bash
mysql -u root -e "SELECT 1;"
```

---

### Error: "MySQL no está corriendo"

**Síntoma:**
```
⚠️  No se pudo conectar a MySQL.
Verifica que MySQL esté corriendo.
```

**Solución:**

1. **En XAMPP:**
   - Abre el panel de control de XAMPP
   - Inicia MySQL

2. **Verificar:**
```bash
mysql -u root -e "SELECT 1;"
```

3. **Si MySQL no está en PATH:**
```bash
# Usar ruta completa de XAMPP
/Applications/XAMPP/xamppfiles/bin/mysql -u root -e "SELECT 1;"
```

---

### Error: "Assets no encontrados"

**Síntoma:**
```
⚠️  No se encontró el directorio de assets: /ruta/a/assets
```

**Solución:**

1. **Verificar que la ruta exista:**
```bash
ls -la /ruta/a/assets
```

2. **Usar ruta absoluta:**
```json
"assets_path": "/Users/usuario/Desktop/assets-mi-proyecto"
```

3. **O usar ruta con ~:**
```json
"assets_path": "~/Desktop/assets-mi-proyecto"
```

4. **Verificar permisos:**
```bash
chmod -R 755 ~/Desktop/assets-mi-proyecto
```

---

### Error: "No se encontraron assets válidos"

**Síntoma:**
```
⚠️  No se encontraron assets válidos en: /ruta/a/assets
```

**Causa:** La carpeta no contiene los archivos esperados

**Solución:**

1. **Verificar archivos requeridos:**
```bash
ls -la ~/Desktop/assets-mi-proyecto/
# Debe tener al menos: logo.png, logo-2.png, favicon.ico
```

2. **Estructura esperada:**
```
assets-mi-proyecto/
├── logo.png          ✅ Requerido
├── logo-2.png        ✅ Requerido
├── favicon.ico       ✅ Requerido
└── (otros opcionales)
```

---

### Error: "El directorio ya existe"

**Síntoma:**
```
[WARNING] El directorio '/path/to/proyecto' ya existe
```

**Solución:**

1. **En modo JSON:** El script elimina automáticamente el directorio existente

2. **En modo interactivo:** El script pregunta si eliminar

3. **Eliminar manualmente:**
```bash
rm -rf /path/to/proyecto
```

---

### Error: "No se encuentra el script create-new-project.sh"

**Síntoma:**
```
[ERROR] No se encuentra el script create-new-project.sh
```

**Solución:**

1. **Verificar que estés en cd-system:**
```bash
pwd
# Debe mostrar: /Applications/XAMPP/xamppfiles/htdocs/cd-system
```

2. **Verificar que el script exista:**
```bash
ls -la scripts/create-new-project.sh
```

3. **Verificar permisos:**
```bash
chmod +x scripts/create-new-project.sh
```

---

### Error: "Las migraciones fallaron"

**Síntoma:**
```
Error: Las migraciones fallaron. Por favor, revisa los errores arriba.
```

**Solución:**

1. **Verificar base de datos:**
```bash
mysql -u root -e "SHOW DATABASES LIKE 'bewpro-mi-proyecto';"
```

2. **Crear base de datos manualmente:**
```bash
mysql -u root -e "CREATE DATABASE IF NOT EXISTS \`bewpro-mi-proyecto\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
```

3. **Verificar credenciales en `.env`:**
```bash
grep DB_ .env
```

4. **Ejecutar migraciones manualmente:**
```bash
cd /path/to/proyecto
php artisan migrate:fresh --seed --force
```

---

### Error: "Composer install falla"

**Síntoma:**
```
Error: La instalación de dependencias falló.
```

**Solución:**

1. **Verificar extensiones PHP:**
```bash
php -m | grep -E "(fileinfo|pdo|mbstring|xml|curl|zip|gd)"
```

2. **Instalar extensiones faltantes:**
   - En XAMPP: Ya vienen incluidas
   - En macOS: `brew install php`
   - En Linux: `sudo apt-get install php-extensions`

3. **Limpiar cache de composer:**
```bash
composer clear-cache
```

4. **Reintentar:**
```bash
composer install --no-interaction
```

---

### Error: "Rama cd-system no encontrada"

**Síntoma:**
```
[WARNING] Rama actual: main (esperado: cd-system)
```

**Solución:**

1. **Cambiar a rama cd-system:**
```bash
cd /path/to/proyecto
git checkout cd-system
```

2. **Si la rama no existe, crearla:**
```bash
git checkout -b cd-system
```

---

### Error: ".gitattributes no tiene protecciones"

**Síntoma:**
```
[WARNING] .gitattributes no configurado correctamente
```

**Solución:**

1. **Copiar desde cd-system:**
```bash
cp ../cd-system/.gitattributes .
git add .gitattributes
git commit -m "chore: Agregar protección de archivos del sistema"
```

---

## 🔍 Debugging Avanzado

### Habilitar Modo Debug

Agregar al inicio del script:
```bash
set -x  # Muestra cada comando ejecutado
```

### Ver Valores Leídos del JSON

Agregar después de leer JSON:
```bash
print_message "Valores leídos:"
print_message "  PROJECT_NAME: $PROJECT_NAME"
print_message "  REPO_URL: $REPO_URL"
print_message "  DB_NAME: $DB_NAME"
print_message "  IS_CPANEL: $IS_CPANEL"
```

### Ver Input a setup_cd_project.sh

Agregar antes de ejecutar setup:
```bash
print_message "Input para setup:"
cat "$TEMP_SETUP_INPUT"
```

### Verificar Variables de Entorno

```bash
print_message "Variables de entorno:"
print_message "  CPANEL: $CPANEL"
env | grep CPANEL
```

---

## 📞 Obtener Ayuda

Si el problema persiste:

1. **Revisar logs:**
   - Output del script
   - Logs de Laravel: `storage/logs/laravel.log`

2. **Verificar versión:**
```bash
php --version
composer --version
git --version
jq --version
```

3. **Información del sistema:**
```bash
uname -a
```

4. **Documentación:**
   - [Guía de Uso](./01-guia-uso.md)
   - [Guía Técnica](./03-guia-tecnica.md)

---

**Siguiente:** [Changelog](./06-changelog.md)

