diff --git a/func/git.sh b/func/git.sh index fdb09aa..75260ca 100644 --- a/func/git.sh +++ b/func/git.sh @@ -117,6 +117,64 @@ gitssl() { git config --global http.sslVerify "$choice" } + +gitversion(){ + + local version + + # --- RÉCUPÉRATION DYNAMIQUE DE LA version --- + # On récupère le dernier tag existant. + # Si aucune erreur, on le stocke. Sinon, on part de 1.0.0 par défaut. + version=$(git describe --tags --abbrev=0 2>/dev/null) + + if [ -z "$version" ]; then + version="1.0.0" + msg_warning "Aucun tag trouvé, initialisation à la version $version" + else + msg_info "Version actuelle détectée : $version" + fi + + # --- SAISIE DU MESSAGE --- + read -p "Commit message for version $version: " msg + + # Message par défaut si vide + msg=${msg:-"Release version $version"} + + # --- OPÉRATIONS GIT --- + + # On s'assure d'être à jour + msg_info "Synchronisation locale...🔄" + git pull --rebase + + # Ajout et commit + git add . + + # On vérifie s'il y a quelque chose à commiter pour éviter l'erreur + if git diff-index --quiet HEAD --; then + msg_info "Rien à commiter, passage direct aux tags." + else + git commit -m "$msg" + git push + fi + + # --- GESTION DES TAGS --- + msg_info "Mise à jour du tag $version..." + + # Supprimer le tag localement + git tag -d "$version" 2>/dev/null + + # Supprimer le tag distant (syntaxe moderne) + git push origin --delete "$version" 2>/dev/null + + # Créer le nouveau tag annoté + git tag -a "$version" -m "version $version" + + # Pousser le tag + git push origin "$version" + + msg_success " Terminé ! La version $version est à jour." +} + script_update() { local BRANCH LOCAL REMOTE current_path diff --git a/inc/alias.sh b/inc/alias.sh index 1cec102..3e9ed76 100644 --- a/inc/alias.sh +++ b/inc/alias.sh @@ -69,5 +69,7 @@ alias gitclone='gitclone' alias giturl='giturl' # enable / disable ssl verification alias gitssl='gitssl' +# ajout d'une version +alias gitversion='gitversion' #endregion