123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #!/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 <jules.latsague@caldera.com>"
- 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 ;
|