# 🚀 Uso de Directorio Local para Crear Proyectos

## 🎯 Objetivo

Optimizar la creación de proyectos usando el directorio local de `cd-system` en lugar de descargar desde GitHub, haciendo el proceso **mucho más rápido** y sin depender de la velocidad de internet.

---

## ✅ Ventajas

- ⚡ **Mucho más rápido**: Instantáneo vs minutos de descarga
- 🌐 **Sin internet**: Funciona offline
- 📦 **Mismo resultado**: Historial de Git idéntico
- 🔄 **Fallback automático**: Si no existe local, usa GitHub

---

## 🔍 Cómo Funciona

El script `clone-to-new-repo.sh` ahora:

1. **Detecta automáticamente** si existe `cd-system` en el directorio padre
2. **Verifica** que sea un repositorio Git válido con la rama `cd-system`
3. **Usa el directorio local** como fuente si está disponible
4. **Usa GitHub** como fallback si no existe local

---

## 📋 Requisitos

Para que el script use el directorio local:

1. El directorio `cd-system` debe estar en el mismo nivel que el nuevo proyecto:
   ```
   htdocs/
   ├── cd-system/          ← Debe existir aquí
   └── nuevo-proyecto/     ← Se crea aquí
   ```

2. El directorio `cd-system` debe ser un repositorio Git válido

3. Debe tener la rama `cd-system` disponible

---

## 🔄 Proceso Automático

### Cuando existe `cd-system` local:

```bash
✅ Directorio local de cd-system detectado: /ruta/a/cd-system
   Usando fuente local (más rápido que descargar desde GitHub)

[STEP] 3. Obteniendo rama cd-system desde CD-System local...
   (Instantáneo, sin descarga desde internet)
✅ Rama cd-system obtenida desde local (instantáneo)
```

### Cuando NO existe `cd-system` local:

```bash
[STEP] 3. Descargando rama cd-system desde CD-System...
   (Esto puede tardar dependiendo de tu conexión)
✅ Rama cd-system descargada desde GitHub
```

---

## 📊 Comparación

| Aspecto | Local | GitHub |
|---------|-------|--------|
| **Velocidad** | ⚡ Instantáneo | 🐌 Depende de internet |
| **Internet** | ❌ No requiere | ✅ Requiere |
| **Historial Git** | ✅ Idéntico | ✅ Idéntico |
| **Commits** | ✅ Mismos | ✅ Mismos |
| **Branches** | ✅ Mismas | ✅ Mismas |

---

## 🛠️ Verificación Manual

Si quieres verificar que el directorio local será usado:

```bash
# Verificar que existe
ls -la /Applications/XAMPP/xamppfiles/htdocs/cd-system

# Verificar que es un repo Git
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
git status

# Verificar que tiene la rama cd-system
git branch | grep cd-system
```

---

## 🔧 Fallback Automático

Si el directorio local existe pero falla por alguna razón, el script automáticamente:

1. Detecta el error
2. Cambia a GitHub como fuente
3. Continúa el proceso normalmente

```bash
⚠️ Error con fuente local, intentando con GitHub como fallback...
✅ Rama cd-system descargada desde GitHub (fallback)
```

---

## 📝 Notas Importantes

1. **El resultado es idéntico**: Usar local o GitHub produce el mismo resultado
2. **Historial preservado**: Todos los commits se mantienen igual
3. **Detección automática**: No necesitas configurar nada
4. **Transparente**: El proceso funciona igual, solo más rápido

---

## 🚀 Uso

No necesitas hacer nada especial. El script detecta automáticamente:

```bash
# Ejecutar normalmente
./scripts/create-complete-project.sh mi-proyecto.json

# El script automáticamente:
# - Detecta cd-system local si existe
# - Lo usa si está disponible
# - Usa GitHub si no existe
```

---

## 🆘 Solución de Problemas

### El script no detecta el directorio local

Verificar:
```bash
# 1. Que exista en el directorio padre
ls -la ../cd-system

# 2. Que sea un repo Git
cd ../cd-system && git status

# 3. Que tenga la rama cd-system
git branch | grep cd-system
```

### Error: "cd-system local encontrado pero no tiene la rama cd-system"

Solución:
```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
git checkout cd-system
# O crear la rama si no existe
```

---

## 📚 Referencias

- [Proceso Optimizado Completo](./proceso-optimizado-completo.md)
- [Guía: Crear Nuevo Proyecto](./new-project.md)

---

**Última actualización**: Detección automática de directorio local implementada

