36 lines
1.6 KiB
Bash
36 lines
1.6 KiB
Bash
#!/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
|
|
}
|