Aller au contenu

lore hook

Gérer le hook Git post-commit qui déclenche le flux de documentation Lore.

Synopsis

lore hook <install|uninstall>

Qu'est-ce que ça fait ?

Après chaque git commit, le hook post-commit se déclenche automatiquement et lance le flux de questions. lore hook permet d'installer ou de retirer ce hook manuellement.

Analogie : Le hook est comme un détecteur de fumée — installez-le une fois et il s'active quand il le faut. lore hook install le monte ; lore hook uninstall le retire.

La plupart des utilisateurs n'ont jamais besoin de cette commande — lore init installe le hook automatiquement.

Scénario concret

Votre équipe utilise Husky pour le linting pre-commit. Vous voulez ajouter le hook post-commit de Lore sans casser la configuration existante :

lore hook install
# Lore ajoute sa section avec des marqueurs — vos hooks Husky restent intacts

lore hook

Sous-commandes

lore hook install

Installe le hook post-commit dans .git/hooks/post-commit (ou à l'emplacement core.hooksPath).

Ce qu'il fait :

  1. Vérifie si .git/hooks/post-commit existe
  2. S'il existe : ajoute la section Lore entre les marqueurs # LORE-START et # LORE-END
  3. S'il n'existe pas : crée le fichier avec le hook Lore
  4. Rend le fichier exécutable (chmod +x)

Coexistence avec d'autres hooks :

#!/bin/bash
# Votre code de hook existant ici
npm run lint-staged

# LORE-START
if (: < /dev/tty) 2>/dev/null; then
  exec lore _hook-post-commit < /dev/tty
else
  exec lore _hook-post-commit
fi
# LORE-END

La redirection < /dev/tty reconnecte stdin depuis le terminal (Git ferme stdin pour les hooks). Le fallback assure un fonctionnement silencieux en CI/Docker où /dev/tty n'est pas disponible.

Les marqueurs garantissent que Lore ne touche qu'à sa propre section.

lore hook uninstall

Supprime la section Lore du fichier hook. Si Lore était le seul contenu, supprime le fichier entièrement.

Cas limites

core.hooksPath configuré

Si Git est configuré pour utiliser un dossier de hooks personnalisé (courant en monorepo), Lore ne peut pas s'auto-installer :

lore hook install
# → Attention : core.hooksPath est défini sur /path/to/hooks
# → Ajoutez ces lignes à votre hook post-commit manuellement :
# →   # LORE-START
# →   /usr/local/bin/lore _hook-post-commit
# →   # LORE-END

Hook déjà installé

lore hook install
# → Hook déjà installé (idempotent — sûr de relancer)

Exemples

# Installer le hook
lore hook install
# → ✓ Hook post-commit installé

# Vérifier l'installation
cat .git/hooks/post-commit
# → #!/bin/bash
# → # LORE-START
# → /usr/local/bin/lore _hook-post-commit
# → # LORE-END

# Désinstaller
lore hook uninstall
# → ✓ Hook post-commit supprimé

# Vérifier par script
grep -q "LORE-START" .git/hooks/post-commit 2>/dev/null && echo "installé" || echo "pas installé"

Questions fréquentes

"C'est quoi _hook-post-commit ?"

Une commande interne utilisée par le fichier hook pour exécuter le Decision Engine, la détection contextuelle et le flux de questions. Ne l'appelez jamais directement.

"Le hook ne se déclenche pas après mes commits"

Vérifiez dans l'ordre :

  1. Hook installé ? grep "LORE" .git/hooks/post-commit
  2. Hook exécutable ? ls -la .git/hooks/post-commit (devrait montrer -rwx)
  3. lore dans le PATH ? which lore
  4. core.hooksPath qui surcharge ? git config core.hooksPath

"Puis-je désactiver le hook temporairement ?"

# 1. Ignorer un commit
git commit -m "quick fix [doc-skip]"

# 2. Désinstaller et réinstaller plus tard
lore hook uninstall
# ... commits sans Lore ...
lore hook install

# 3. Skip intégré Git (saute TOUS les hooks)
git commit --no-verify -m "urgence"

Tips & Tricks

  • Rarement nécessaire : lore init installe le hook automatiquement.
  • Utilisateurs Husky/pre-commit : Lore utilise des marqueurs et ne touche jamais vos autres hooks.
  • Désactivation temporaire : lore hook uninstall puis lore hook install quand prêt. Ou [doc-skip].
  • Monorepo : Si core.hooksPath est défini, suivez les instructions manuelles que Lore fournit.

Codes de sortie

Code Signification
0 Succès
1 Erreur (impossible d'écrire dans le dossier hooks)

Voir aussi