Linux_frogg-profile.d/func/git.sh

132 lines
2.7 KiB
Bash

#!/bin/bash
if [[ -z "${WELCOME_SCRIPT_PATH}" ]]; then
WELCOME_SCRIPT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." &>/dev/null && pwd)"
fi
#region INCLUDES
. "${WELCOME_SCRIPT_PATH}/config/config_git.sh"
#endregion
getbranch(){
local branch
# Récupère le nom de la branche actuelle
branch=$(git branch --show-current 2>/dev/null)
if [[ -z "$branch" ]]; then
msg_error "Pas dans un dépôt Git"
exit
fi
echo "$branch"
}
gitinit(){
msg_info "Set git user : ${1:-$CONFIG_GIT_USER} ${2:-$CONFIG_GIT_EMAIL}"
git config --global user.name user.name "${1:-$CONFIG_GIT_USER}"
git config --global user.email user.email "${2:-$CONFIG_GIT_EMAIL}"
msg_info "Init git repository"
git init
git add .
git commit -m "Initial commit"
git branch -M main
msg_info "Adding origin : ${3:-$CONFIG_GIT_SERVER}$(basename "$(pwd)")"
git remote add origin "${3:-$CONFIG_GIT_SERVER}$(basename "$(pwd)")}"
# Push repo on git server
if ! git push -u origin main; then
msg_error "Error while pushing to ${3:-$CONFIG_GIT_SERVER}$(basename "$(pwd)"}"
return 2
fi
}
gitreset(){
local branch
branch=$(getbranch)
git fetch origin
git reset --hard origin/"${1:-$branch}"
git clean -fd
msg_success "Dépôt synchronisé et nettoyé."
}
gitsync(){
local branch
branch=$(getbranch)
git fetch
git pull origin "${1:-$branch}"
}
gitclone(){
if [[ -z "$1" ]]; then
msg_warning "Veuillez préciser l'adresse d'un dépôt Git"
return 1
fi
git init
git remote add origin "$1"
git fetch
git reset --hard origin/main
git clean -fd
msg_success "Dépôt cloné."
}
giturl(){
local branch
branch=$(getbranch)
git remote set-url origin "$1"
msg_success "Url du dépôt changé en $1."
}
gitssl() {
local choice="${1:-true}"
git config --global http.sslVerify "$choice"
}
script_update() {
local BRANCH LOCAL REMOTE current_path
current_path="$PWD"
cd "$WELCOME_SCRIPT_PATH" || return 2
if ! git fetch origin >/dev/null 2>&1; then
msg_error "Erreur lors du Fetch"
cd "$current_path" || :
return 3
fi
BRANCH=$(git rev-parse --abbrev-ref HEAD)
LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse origin/"$BRANCH")
if [ "$LOCAL" = "$REMOTE" ] && git diff --quiet && git diff --cached --quiet; then
cd "$current_path" || :
return 0
fi
# update
echo ""
if git reset --hard origin/"$BRANCH"; then
msg_success "Les script de welcome a été mis à jour !! relancer le ssh pour profiter des nouvelles fonctionnalités"
echo ""
cd "$current_path" || :
return 1
else
msg_error "Erreur lors de la mise à jour du script"
cd "$current_path" || :
return 4
fi
}