npm package: @nexaris/gcmb
Description: CLI pour commits avec ticket
Author: Nexaris
Latest version: 1.0.3

# GCB - Git Commit Builder

CLI pour accélérer les commits et push en respectant le pattern de commit de l'équipe.

## Description

**GCB** (Git Commit Builder) est un outil en ligne de commande qui automatise la création de commits formatés selon les conventions de votre équipe. Il génère automatiquement les messages de commit au format `type(TICKET): message` en extrayant le numéro de ticket depuis le nom de votre branche Git.

**Version actuelle :** 1.0.0 (V1)

## Installation

### Installation globale (recommandée)

```bash
npm install -g @nexaris/gcmb
```

### Installation locale dans un projet

```bash
npm install --save-dev @nexaris/gcmb
```

## Prérequis

- Node.js (version 14 ou supérieure)
- Git configuré dans votre projet
- Être sur une branche qui respecte le pattern `*/GYB-XX*` (ex: `feature/GYB-01`, `fix/gyb-123-fix-bug`)

## Usage

```bash
gcmb <type> <message>
```

### Arguments

- **`type`** : Type de commit (ex: `feat`, `fix`, `chore`, `refactor`, etc.)
- **`message`** : Description du commit

### Workflow automatique

1. **Vérification des fichiers staged** : Le CLI vérifie qu'au moins un fichier est ajouté avec `git add`
2. **Extraction du ticket** : Récupère automatiquement le numéro de ticket depuis le nom de la branche
3. **Création du commit** : Génère un commit au format `type(GYB-XX): message`
4. **Proposition de push** : Demande si vous souhaitez push directement sur la branche

## Exemples

### Exemple complet

```bash
# 1. Vous êtes sur la branche feature/GYB-42
git checkout -b feature/GYB-42

# 2. Vous modifiez des fichiers
# ... modifications ...

# 3. Vous stagez vos fichiers
git add src/components/Header.js

# 4. Vous utilisez gcmb
gcmb feat add new header component

# Résultat :
# ✓ Commit créé : "feat(GYB-42): add new header component"
# ? Do you want push to "feature/GYB-42"? (y/N)
```

### Autres exemples

```bash
# Fix de bug
gcmb fix resolve login issue on mobile

# Commit : "fix(GYB-42): resolve login issue on mobile"

# Refactoring
gcmb refactor improve performance of data fetching

# Commit : "refactor(GYB-42): improve performance of data fetching"

# Chore (maintenance)
gcmb chore update dependencies

# Commit : "chore(GYB-42): update dependencies"
```

## Pattern de branche requis

Le CLI **impose** que votre branche contienne un ticket commençant par `GYB-` ou `gyb-` :

✅ **Branches valides :**
- `feature/GYB-01`
- `feature/gyb-123`
- `fix/GYB-42-fix-login`
- `hotfix/GYB-999`

❌ **Branches invalides :**
- `feature/my-feature` (pas de ticket)
- `feature/TICKET-01` (mauvais préfixe)
- `main` (pas de ticket)

## Messages d'erreur

| Erreur | Raison |
|--------|--------|
| `Type cannot be empty` | Vous devez fournir un type de commit |
| `Message cannot be empty` | Vous devez fournir un message de commit |
| `Branch must respect this pattern "GYB-ticketnumber"` | Votre branche ne contient pas de ticket GYB |
| `No file staged. Run git add before` | Aucun fichier n'est ajouté au staging (`git add`) |

## Conventions de commit supportées

Le CLI supporte les types de commit standards :

- `feat` : Nouvelle fonctionnalité
- `fix` : Correction de bug
- `refactor` : Refactoring de code
- `chore` : Tâches de maintenance
- `docs` : Documentation
- `style` : Formatage, style
- `test` : Ajout ou modification de tests
- `perf` : Amélioration de performance

## Roadmap (Améliorations futures)

Cette V1 est ciblée pour les besoins internes de l'équipe. Voici les améliorations prévues :

- [ ] Support de patterns de ticket personnalisables
- [ ] Configuration via fichier `.gcbrc`
- [ ] Templates de commit personnalisables
- [ ] Validation des types de commit
- [ ] Support des commits co-authored
- [ ] Mode interactif pour sélectionner le type
- [ ] Intégration avec des outils de gestion de tickets (Jira, Linear, etc.)

## License

MIT

---

**Développé avec ❤️ pour accélérer le workflow de l'équipe**