gitploy: outillage de déploiement git (deploy + hotfix transactionnels)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
# Helpers partagés par git-deploy et git-hotfix. À sourcer, pas à exécuter.
|
||||
|
||||
# Config git-native (aucun .env)
|
||||
deploy_source() { git config deploy.source 2>/dev/null || echo master; }
|
||||
deploy_push() { git config --bool deploy.push 2>/dev/null || echo false; }
|
||||
|
||||
# Erreur AVANT toute mutation : on sort sans rien avoir touché.
|
||||
die() { echo "✗ $*" >&2; exit 1; }
|
||||
|
||||
# Refuse de continuer si une opération git est déjà en cours (merge/rebase/…).
|
||||
assert_clean_git_state() {
|
||||
local gd; gd=$(git rev-parse --git-dir)
|
||||
[ ! -e "$gd/MERGE_HEAD" ] || die "Un merge est déjà en cours. Termine-le d'abord."
|
||||
[ ! -e "$gd/CHERRY_PICK_HEAD" ] || die "Un cherry-pick est en cours. Termine-le d'abord."
|
||||
[ ! -e "$gd/REVERT_HEAD" ] || die "Un revert est en cours. Termine-le d'abord."
|
||||
[ -z "$(ls -d "$gd"/rebase-* 2>/dev/null)" ] || die "Un rebase est en cours. Termine-le d'abord."
|
||||
}
|
||||
|
||||
# Affiche l'état + le plan, puis demande confirmation. Non → sortie sans mutation.
|
||||
confirm() {
|
||||
echo
|
||||
echo "── État actuel ─────────────────────────────"
|
||||
git status --short --branch
|
||||
echo "── Opérations prévues ──────────────────────"
|
||||
printf '%s\n' "$1"
|
||||
echo "────────────────────────────────────────────"
|
||||
local ans=""
|
||||
printf "Confirmer ? [O/n] "
|
||||
read -r ans || ans=""
|
||||
case "$ans" in
|
||||
n|N|non|Non|NON|no) echo "✗ Annulé — aucun changement effectué."; exit 0 ;;
|
||||
*) return 0 ;;
|
||||
esac
|
||||
}
|
||||
Reference in New Issue
Block a user