# Giji

Herramientas Git potenciadas por IA para optimizar tu flujo de trabajo de desarrollo. Crea commits inteligentes y pull requests con descripciones generadas por IA.

## Características

- 🤖 **Commits Inteligentes**: Genera automáticamente mensajes de commit convencionales usando IA
- 📝 **Pull Requests con IA**: Crea PRs con descripciones generadas por IA
- 🚀 **Interfaz Simple**: Comandos CLI fáciles de usar
- ⚡️ **Flujo Rápido**: Automatiza tareas repetitivas de git

## Instalación

```bash
pip install giji
```

## Uso

### Commits Inteligentes

Crea commits con mensajes convencionales generados por IA:

```bash
# Hacer commit de todos los cambios con mensajes inteligentes
giji commit
```

### Pull Requests

Crea pull requests con descripciones generadas por IA:

```bash
# Crear un PR (auto-commit por defecto)
giji pr --base main

# Crear un PR sin auto-commit
giji pr --base main --no-commit

# Crear un PR borrador con ticket JIRA
giji pr --base main --draft --ticket SIS-123
```

### Opciones

#### Comando PR

- `--base, -b`: Rama base (ej: main, develop) [default: master]
- `--ticket, -t`: Número de ticket JIRA (ej: SIS-290)
- `--draft`: Crear PR como borrador
- `--no-commit`: Omitir auto-commit de cambios

## Requisitos

- Python 3.7+
- Git
- GitHub CLI (`gh`)
- API key de Gemini

## Configuración del Entorno

1. Obtén una API key de Gemini en [Google AI Studio](https://aistudio.google.com/app/apikey)
2. Configura la variable de entorno:

```bash
export GEMINI_API_KEY='your-api-key'
```

## Licencia

MIT License - ver [LICENSE](LICENSE) para más detalles.

## Contribuir

Las contribuciones son bienvenidas! Por favor, lee [CONTRIBUTING.md](CONTRIBUTING.md) para detalles sobre nuestro código de conducta y el proceso para enviar pull requests.

## Soporte

Si encuentras algún problema o tienes una sugerencia, por favor crea un issue en el [repositorio de GitHub](https://github.com/cometa/giji/issues).

## Desarrollo

### Construcción y Publicación

1. Actualizar la versión en `src/cz_ai_conventional/version.py`:

```python
VERSION = "x.y.z"  # Incrementar según cambios
```

2. Construir el paquete:

```bash
# Instalar dependencias de desarrollo
pip install build twine

# Construir distribución
python -m build
```

3. Publicar en PyPI:

```bash
# Configurar .pypirc con credenciales
python -m twine upload --config-file .pypirc dist/*
```

También puedes usar el Makefile incluido:

```bash
# Construir y publicar
make build

# Solo actualizar versión existente
make update
```

### Flujo de Desarrollo

1. Crear rama incluyendo el número de ticket JIRA

   El número de ticket se extraerá automáticamente de la rama.
   Formatos soportados:

   ```
   SIS-123                    ✓
   SIS-123/mi-feature        ✓
   feature/SIS-123           ✓
   fix/SIS-123-bug-fix       ✓
   feature/SIS-123/new-feat  ✓
   ```

2. Realizar cambios y usar los comandos:

```bash
# Commit de cambios
giji commit

# Crear PR (detecta ticket automáticamente de la rama)
giji pr --base main
```
