Files
gitploy/_deploy_lib.sh

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
}