#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire DEFAULTS ptools

function display_help() {
    uecho "$scriptname: basculer sur une branche de hotfix

USAGE
    $scriptname [options] [HOTFIX [SOURCE]]

- Vérifier s'il n'y a pas de modifications locales. Sinon, proposer de faire un
  commit ou un stash.
- Si TOPIC est spécifié, et si on n'est pas déjà sur cette branche, basculer
  vers cette nouvelle branche. S'il s'agit d'une nouvelle branche, la baser sur
  la branche SOURCE, qui vaut par défaut master
- Si TOPIC n'est pas spécifié, afficher un menu pour choisir la branche de
  destination.

OPTIONS
    -C, --projdir PROJDIR
        Spécifier le répertoire de base du projet qui est dans git. Par défaut,
        on travaille dans le répertoire courant et on laisse git trouver le
        répertoire de base du projet. Avec cette option, le répertoire courant
        est modifié avant de lancer les commandes git.
    -O, --origin ORIGIN
        Spécifier le nom de l'origine. Par défaut, utiliser 'origin'
    -o, --offline
        En cas de création d'une branche, ne pas pousser vers l'origine; ne pas
        tenter le cas échéant de traquer la branche dans l'origine; ne pas
        supprimer une branche dans l'origine. Cette option est automatiquement
        activée si la variable UTOOLS_VCS_OFFLINE est définie.
    --online
        Annuler l'effet de la variable UTOOLS_VCS_OFFLINE: forcer le mode online
    -m, --merge
        Si la branche actuelle est une branche de hotfix, la merger dans master
        (ou dans la branche de release), et dans develop, puis la supprimer.
        Puis basculer sur la branche master.
    -l, --log
        Afficher les modifications actuellement effectuée dans la branche de
        hotfix par rapport à master.
    -d, --diff
        Afficher les modifications actuellement effectuée dans la branche de
        hotfix par rapport à master, sous forme de diff."
}

projdir=
origin=origin
parse_opts "${PRETTYOPTS[@]}" \
    --help '$exit_with display_help' \
    -C:,--projdir: projdir= \
    -O:,--origin: origin= \
    -o,--offline UTOOLS_VCS_OFFLINE=1 \
    --online UTOOLS_VCS_OFFLINE= \
    @ args -- "$@" && set -- "${args[@]}" || die "$args"

if [ -n "$projdir" ]; then
    cd "$projdir" || die
fi

git_ensure_gitvcs