#!/bin/sh GIT_PATH=$(whereis git) GIT_APP_PATH="/usr/lib/git-core/git" PROTECT_LIST="~/.gitignore" PROTECTED_BRANCH="" B="" main () { echo " Traitement des arguments ━━━━━━━━━━━━━━━━━━━━━━━" while [ $# -gt 0 ] do case $1 in -h) echo "Installe Git-Agile." echo "Git-Agile va prévenir les actions push sur les branches master et sprint-* des branches définit par l'utilisateur (par défaut dans $PROTECT_LIST)" echo "Syntaxe:" echo "\t sh gitagile.sh [parametre]" echo "\nParametres:" echo "-p\tDéfinit l'emplacement de sauvegarde des branches (par défaut $PROTECT_LIST)" echo "-a\tDéfinit l'emplacement de l'exécutable de git (par défaut $GIT_APP_PATH)" echo "-g\tDéfinit l'emplacement depuis lequel git est invoqué" echo "-d\tLance le déploiement du script d'interface (dans $GIT_APP_PATH) sans modifier la liste des branches" echo "-b\tAjoute les noms suivants à la liste des " echo "-l\tCrée la liste des branches protégées d'après les parametres précédants; efface les entrées précédantes" echo "-v\tAffiche la version du script" echo "\n Fin de traitements ━━━━━━━━━━━━━━━━━━━━━━━━━━━━" exit 1 ;; -p) B="" PROTECT_LIST=$2 shift shift ;; -a) B="" GIT_APP_PATH=$2 shift shift ;; -g) B="" GIT_PATH=$2 shift shift ;; -d) B="" deploy exit 1 ;; -b) B=1 shift ;; -v) B="" version exit 1 ;; -l) B="" create_liste exit 1 ;; -i) B="" finstall exit 1 ;; *) if [ "$B" ]; then PROTECTED_BRANCH="$PROTECTED_BRANCH\n$2" shift else echo "Argument inconnu <$1>. Utiliser gitagile.sh -h pour plus d'informations" fi shift ;; esac done echo "\n Fin de traitements ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" } create_liste() { echo $PROTECTED_BRANCH > PROTECT_LIST } deploy() { mv $GIT_PATH $GIT_PATH.bk echo "#!/bin/sh if [ -d .git ]; then if [ \"\$(cat ~/.gitagile | grep \$(basename -s .git `/usr/lib/git-core/git config --get remote.origin.url`))\" ]; then if [ \"\$1\" = \"push\" ]; then if [ \"\$(/usr/lib/git-core/git branch | grep \'^* master\')\" ] || [ \"\$(/usr/lib/git-core/git branch | grep \'^* sprint-\')\" ]; then \/bin\/echo -e \"033[1;31m ⚠ Current branch is protected.\033[0m\\\nNo push allowed\\\nSee $PROTECT_LIST to change it or bypass it in invocating $GIT_APP_PATH \\\n\" exit fi fi fi fi $GIT_APP_PATH \$@" > $GIT_PATH } version() { echo "Version 0.3" } finstall() { echo "INSTALLATION COMPLETE ───────────────────────────" if [ "$PROTECTED_BRANCH" ]; then create_liste else echo -e "\033[1;37m ⚠ Aucune branche n'a été précisé. Entrez toutes les branches séparées par «/», puis entrer pour valider\033[0m" read PROTECTED_BRANCH PROTECTED_BRANCH="$(echo $PROTECTED_BRANCH | sed -e 's/\ /\n/g')" create_liste fi deploy } echo "\t┌───────────────────────────────────────┐" echo "\t│ │" echo "\t│ Installation de │" echo "\t│ Git-Agile │" echo "\t│ │" echo "\t└───────────────────────────────────────┘\n" echo "Auteur : Jules Latsague " echo "Dernière modification : 23/10/2017" version echo "ATTENTION ───────────────────────────────────────" echo " — Vous devez posséder les accès super utilisateurs (sudo)" echo " — Ce script ne doit PAS être exécuter en tant que super utilisateur" echo "─────────────────────────────────────────────────" main $@ exit ;