#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname -- "$0")/../load.sh" || exit 1
require: git pman pman.conf

git_cleancheckout_DIRTY="\
Vous avez des modifications locales.
Enregistrez ces modifications avant de créer une nouvelle branche"

chdir=
Origin=
ConfigBranch=
ConfigFile=
[ -z "$PMAN_NO_PUSH" ] && Push=1 || Push=
args=(
    "créer une branche de feature"
    "<feature>"
    -d:,--chdir:BASEDIR chdir= "répertoire dans lequel se placer avant de lancer les opérations"
    -O:,--origin Origin= "++\
origine à partir de laquelle les branches distantes sont considérées"
    -B:,--config-branch ConfigBranch= "++\
branche à partir de laquelle charger la configuration"
    -c:,--config-file:CONFIG ConfigFile= "++\
fichier de configuration des branches. cette option est prioritaire sur --config-branch
par défaut, utiliser le fichier .pman.conf dans le répertoire du dépôt s'il existe"
    -n,--no-push Push= "\
ne pas pousser les branches vers leur origine après la fusion"
    --push Push=1 "++\
pousser les branches vers leur origine après la fusion.
c'est l'option par défaut"
)
parse_args "$@"; set -- "${args[@]}"

# charger la configuration
ensure_gitdir "$chdir"
load_branches all
load_config "$MYNAME"
load_branches current

branch="$1"
if [ -z "$branch" -a ${#FeatureBranches[*]} -eq 1 ]; then
    branch="${FeatureBranches[0]}"
fi
[ -n "$branch" ] || die "Vous devez spécifier la branche à créer"
branch="$FEATURE${branch#$FEATURE}"

resolve_should_push
git_ensure_cleancheckout

if array_contains AllBranches "$branch"; then
    git checkout -q "$branch"
else
    # si la branche source n'existe pas, la créer
    args=(--origin "$Origin")
    if [ -n "$ConfigFile" ]; then args+=(--config-file "$ConfigFile")
    elif [ -n "$ConfigBranch" ]; then args+=(--config-branch "$ConfigBranch")
    fi
    [ -z "$Push" ] && args+=(--no-push)
    exec "$MYDIR/pman" "${args[@]}" "$branch"
fi