2025-06-25 23:45:15 -05:00

100 lines
3.1 KiB
Markdown

# 🔍 Gitleaks Pre-commit Hook
Este hook personalizado ejecuta [Gitleaks](https://github.com/gitleaks/gitleaks) para generar reportes en **HTML** (usando plantillas) o **JSON**, con reglas configurables.
## 🚀 Uso
Agregá este repo en tu `.pre-commit-config.yaml`:
```yaml
- repo: https://git.fridu.us/heckyel/gitleaks-pre-commit-hook
rev: v1.0.0
hooks:
- id: gitleaks-template-report
# Uso básico (reglas por defecto de gitleaks)
args: ["--format=html"]
# Con reglas internas desde este repo
# args: ["--format=html", "--rules-internal"]
# Con reglas externas
# args: ["--format=html", "--rules-external", "--config=ruta/a/gitleaks.toml"]
```
> ⚠️ Si usás `--format=json`, no es necesario `--template`.
---
### 🧩 Parámetros disponibles
| Parámetro | Descripción |
| -------------------- | ----------------------------------------------------------------------------|
| `--template=NOMBRE` | Elige la plantilla HTML a usar (por defecto: `leet`) |
| `--format=html\|json` | Formato de salida del reporte (`html` por defecto, o `json`) |
| `--redact` | Oculta los secretos detectados con `***` en el reporte |
| `--force` | Fuerza la reinstalación de Gitleaks (útil para debugging o versiones rotas) |
| `--version=VERSIÓN` | Versión de Gitleaks a instalar (por defecto: `v8.27.0`) |
| `--rules-internal` | Usa el archivo de reglas interno (`rules/gitleaks.toml`) |
| `--rules-external` | Requiere `--config` para especificar un archivo de reglas externo |
| `--config=archivo` | Ruta a archivo de reglas personalizado (requiere `--rules-external`) |
**Comportamiento de las reglas:**
- Por defecto: Usa solo las reglas incorporadas de gitleaks
- Con `--rules-internal`: Usa el archivo de reglas interno
- Con `--rules-external --config=archivo`: Usa el archivo de reglas externo especificado
---
### 🎨 Plantillas disponibles (`--format=html`)
| Nombre | Archivo generado |
| --------- | ----------------------------- |
| `leet` | `.pre-commit/gitleaks/report/index.html` |
| `basic` | `.pre-commit/gitleaks/report/index.html` |
| `myspace` | `.pre-commit/gitleaks/report/index.html` |
| `w98` | `.pre-commit/gitleaks/report/index.html` |
| `wxp` | `.pre-commit/gitleaks/report/index.html` |
> ⚠️ El archivo generado siempre se llama `index.html`, sin importar la plantilla usada.
---
### 📂 Salida esperada
**Formato HTML:**
```sh
.pre-commit/gitleaks/report/
├── index.html
```
**Formato JSON:**
```sh
.pre-commit/gitleaks/report/
├── report.json
```
---
## ✅ Requisitos
- Tener `gitleaks` instalado y disponible en tu `PATH`
- El archivo de reglas debe existir solo si se usa con `--rules-external`
---
## 🛠️ Configuración para desarrollo
```bash
pre-commit install
pre-commit run --all-files
```
---
## 📝 Licencia
[GNUv3 or later](LICENSE)