CLI bash interactif (~3700 lignes, fichier unique wt.sh) pour gérer les git worktrees avec intégration GitHub/GitLab et Claude.
Single-file CLI : tout le code est dans wt.sh. Pas de framework, pas de build — du bash pur avec fzf pour les menus interactifs.
Convention stdout/stderr : le script retourne UNIQUEMENT le path du worktree sélectionné sur stdout. Tous les messages UI vont sur stderr (msg(), msg_warn(), etc.) pour ne pas polluer le résultat.
| Section | Description |
|---|---|
| Options CLI & shell-init | Parsing des flags (--version, --setup, --wizard, --dev, --shell-init) |
| Colors & Style | Variables ANSI (C_RED, C_GREEN, C_ORANGE, C_MAGENTA, etc.) |
| Config | Lecture/écriture ~/.config/wt/config |
| Platform Detection | Auto-détection GitHub vs GitLab |
| CLI Abstraction | cli_pr_list(), cli_pr_view(), etc. — abstraction gh/glab |
| Prompt Generation | Génération de prompts Claude pour review, CI fix, issues |
| Worktrees | format_worktree_line(), is_branch_merged(), get_worktrees() |
| PRs / Issues | Formatage et preview des PRs et issues |
| Actions de création | create_worktree(), create_from_pr(), create_from_issue() |
| Menus | menu_review_pr(), menu_from_issue(), menu_create_worktree(), menu_stash() |
| Main Menu | main_menu() — point d'entrée interactif avec fzf |
- Feature :
{repo}-{prefix}{branch}(ex:myapp-feature/auth) - Review :
{repo}-reviewing-{branch}(ex:myapp-reviewing-fix-bug) - Le préfixe
-reviewing-identifie un worktree de type review
| Icône | Couleur | Signification |
|---|---|---|
● |
dim | Branche principale (main/master) |
✓ |
vert | Branche mergée (squash merge supporté) |
◎ |
magenta | Worktree de review |
★ |
jaune | Nouvelle branche locale (jamais pushée) |
○ |
orange | En cours (pushée, non mergée) |
* |
— | Dirty (changements non committés) |
| CI | Review | Signification |
|---|---|---|
[ok] |
✓ vert |
CI ok / Approved |
[fail] |
✗ rouge |
CI fail / Changes requested |
[..] |
◀ magenta |
CI en cours / Needs MY review |
[draft] |
|
Draft / Pas de review pending |
Framework : BATS (Bash Automated Testing System).
./tests/run.sh # Lancer tous les tests
bats tests/01-config.bats # Un fichier spécifiqueFichiers dans tests/ :
01-config.bats— gestion de la config02-editor.bats— détection d'éditeur03-platform.bats— détection de plateforme04-worktree-dir.bats— répertoire des worktrees05-claude-mode.bats— modes Claude06-cli-flags.bats— flags CLI
- fzf (requis) — menus interactifs
- gh / glab (optionnel) — intégration GitHub/GitLab
- jq (optionnel) — parsing JSON pour les PRs/issues
- claude (optionnel) — fonctionnalités IA
Fichier : ~/.config/wt/config (clés WT_EDITOR, WT_PLATFORM, WT_WORKTREE_DIR, WT_AUTO_CD, WT_FEATURE_PREFIX, WT_AUTO_FETCH, WT_CLAUDE_MODE, WT_LIST_LIMIT).
# Mode dev (utilise le script local au lieu de wt-core installé)
eval "$(./wt.sh --dev)"
# Revenir au mode release
wt --release