# 📦 Guía: Propagar Cambios a cd-system

## 🎯 Opción Recomendada: Desde cokecolombres (Script Automatizado)

### Ejecutar el Script

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cokecolombres
./scripts/propagate-to-cd-system.sh
```

El script:
1. ✅ Copia los archivos necesarios
2. ✅ Muestra los cambios
3. ✅ Pide confirmación antes de commitear
4. ✅ Permite hacer push automáticamente

---

## 🔧 Opción Alternativa: Desde cd-system (Manual)

Si prefieres hacerlo manualmente desde cd-system:

### Paso 1: Copiar Archivos

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system

# Helpers
cp ../cokecolombres/app/helpers.php app/helpers.php

# ViewComposer
cp ../cokecolombres/app/Providers/ViewComposerServiceProvider.php app/Providers/ViewComposerServiceProvider.php

# Documentación
cp ../cokecolombres/docs/README-DEMOS.md docs/
cp ../cokecolombres/docs/CHECKPOINT-DEMOS-2024.md docs/
cp ../cokecolombres/docs/GUIA-COMPLETA-ADAPTACION-DEMOS.md docs/
cp ../cokecolombres/docs/GUIA-RAPIDA-NUEVOS-DEMOS.md docs/
cp ../cokecolombres/docs/RUTAS-ESTANDAR-DEMOS.md docs/
cp ../cokecolombres/docs/VALIDACION-IMAGENES-DEMOS.md docs/
```

### Paso 2: Revisar Cambios

```bash
git status
git diff
```

### Paso 3: Commitear

```bash
git add -A
git commit -m "feat: Propagar mejoras del sistema de demos desde cokecolombres

- Actualizar helpers con 9 demos estandarizados
- Agregar ViewComposer global para variables comunes
- Agregar documentación completa del sistema de demos
- Sistema de fallback para contenido cuando módulos no activos

Commit origen: 45ec0b68 (cokecolombres)"
```

### Paso 4: Pushear

```bash
git push origin cd-system
```

---

## 📋 Archivos que se Propagarán

### Core del Sistema
- ✅ `app/helpers.php` - Helpers actualizados con 9 demos
- ✅ `app/Providers/ViewComposerServiceProvider.php` - ViewComposer global

### Documentación
- ✅ `docs/README-DEMOS.md`
- ✅ `docs/CHECKPOINT-DEMOS-2024.md`
- ✅ `docs/GUIA-COMPLETA-ADAPTACION-DEMOS.md`
- ✅ `docs/GUIA-RAPIDA-NUEVOS-DEMOS.md`
- ✅ `docs/RUTAS-ESTANDAR-DEMOS.md`
- ✅ `docs/VALIDACION-IMAGENES-DEMOS.md`

---

## ⚠️ Archivos que NO se Propagarán

- ❌ `config/cd-system.php` - Configuración específica del proyecto
- ❌ `config/site.php` - Configuración específica del proyecto
- ❌ Assets específicos (`public/cd-project/`)
- ❌ Vistas de demos (solo el patrón si es nuevo)

---

## ✅ Verificación Post-Propagación

Después de propagar, verificar en cd-system:

1. **Helpers funcionan:**
   ```bash
   cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
   php artisan tinker
   >>> get_demo_layout_mapping()
   ```

2. **ViewComposer registrado:**
   - Verificar que `ViewComposerServiceProvider` esté en `config/app.php` providers

3. **Documentación accesible:**
   - Verificar que los archivos estén en `docs/`

---

## 🏗️ Actualizar cd-system en constructoragama

Si necesitas actualizar el cd-system que está dentro del proyecto **constructoragama**, tienes dos opciones:

### Opción 1: Desde cd-system (Recomendado)

Usar el script `propagate-core-improvements.sh` para propagar cambios desde el core cd-system hacia constructoragama:

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
./scripts/propagate-core-improvements.sh https://github.com/LACOMPANIADIGITAL/constructoragama.git
```

#### Con opciones avanzadas:

```bash
# Simulación primero (dry-run) - RECOMENDADO
./scripts/propagate-core-improvements.sh \
  https://github.com/LACOMPANIADIGITAL/constructoragama.git \
  --dry-run

# Propagación con push automático
./scripts/propagate-core-improvements.sh \
  https://github.com/LACOMPANIADIGITAL/constructoragama.git \
  --push yes

# Especificar ramas personalizadas
./scripts/propagate-core-improvements.sh \
  https://github.com/LACOMPANIADIGITAL/constructoragama.git \
  --core-branch cd-system \
  --project-branch cd-system \
  --push yes
```

**Ventajas:**
- ✅ Control centralizado desde el core
- ✅ Protección automática de archivos del proyecto (`.gitattributes`)
- ✅ Permite dry-run para verificar cambios antes
- ✅ Manejo inteligente de conflictos

### Opción 2: Desde constructoragama (Alternativa) ⚠️

Usar el script `update_cd_system_from_origin.sh` desde dentro de constructoragama:

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/constructoragama
./scripts/update_cd_system_from_origin.sh
```

#### Con opciones:

```bash
# Sin push automático (recomendado para revisar primero)
./scripts/update_cd_system_from_origin.sh --push no

# Con push automático
./scripts/update_cd_system_from_origin.sh --push yes

# Especificar URL y ramas personalizadas
./scripts/update_cd_system_from_origin.sh \
  --src-url https://github.com/LACOMPANIADIGITAL/cd-system.git \
  --src-branch cd-system \
  --local-branch cd-system \
  --push yes
```

**⚠️ ADVERTENCIA IMPORTANTE:**

Este script hace un `git reset --hard` que **reemplaza TODO el contenido** de la rama, incluyendo archivos que deberían estar protegidos. Si usas este método:

1. **El script crea un tag de backup automático** antes de actualizar (formato: `backup/cd-system-YYYYMMDD-HHMMSS`)
2. **Después de ejecutar**, debes restaurar manualmente los archivos protegidos:
   ```bash
   # Ver el tag de backup más reciente
   git tag | grep backup | tail -1
   
   # Restaurar archivos protegidos desde el backup
   git checkout backup/cd-system-YYYYMMDD-HHMMSS -- \
     config/cd-system.php \
     config/site.php \
     public/cd-project/
   
   # Hacer commit de la restauración
   git add -A
   git commit -m "fix: Restaurar configuración del proyecto desde backup"
   ```

**Ventajas:**
- ✅ Ejecución desde el proyecto mismo
- ✅ Crea tag de backup automático antes de actualizar
- ✅ Permite control local del proceso

**Desventajas:**
- ⚠️ Requiere restauración manual de archivos protegidos después
- ⚠️ No respeta `.gitattributes` automáticamente (hace reset --hard)

### 🔒 Archivos Protegidos en constructoragama

Durante la propagación, estos archivos **NO se sobrescriben** automáticamente (gracias a `.gitattributes`):

- ✅ `config/cd-system.php` - Configuración específica de constructoragama
- ✅ `config/site.php` - Identidad del proyecto (nombre, email, etc.)
- ✅ `public/cd-project/assets/*` - Assets específicos del proyecto

### ✅ Verificación Post-Propagación en constructoragama

Después de propagar, verificar:

1. **Cambios aplicados:**
   ```bash
   cd /Applications/XAMPP/xamppfiles/htdocs/constructoragama
   git log --oneline -10
   git diff HEAD~1
   ```

2. **Funcionalidad básica:**
   ```bash
   php artisan config:clear
   php artisan cache:clear
   php artisan route:list
   ```

3. **Testing:**
   - Verificar que el sitio carga correctamente
   - Probar funcionalidades principales
   - Revisar logs por errores

### 📚 Referencias Relacionadas

- [Propagación de Mejoras del Core](./cd-system/propagacion-mejoras-core.md)
- [Estrategia de Propagación](./cd-system/estrategia-propagacion-core.md)
- [Flujo de Cambios Core ↔ Proyectos](./cd-system/flujo-cambios-core-proyectos.md)

---

**Recomendación:** Usar el script automatizado desde cokecolombres para mayor seguridad y control.

