#!/bin/bash gitreppath="$(pwd)" BINgit="/usr/bin/git" branchcounter=0 PUT(){ echo -en "\033[${1};${2}H";} DRAW(){ echo -en "\033%";echo -en "\033(0";} WRITE(){ echo -en "\033(B";} HIDECURSOR(){ echo -en "\033[?25l";} NORM(){ echo -en "\033[?12l\033[?25h";} function showBar { percDone=$(echo 'scale=2;'$1/$2*100 | bc) halfDone=$(echo $percDone/2 | bc) #I prefer a half sized bar graph barLen=$(echo ${percDone%'.00'}) halfDone=`expr $halfDone + 6` tput bold PUT 6 28; printf "%4.4s " $barLen% #Print the percentage PUT 5 $halfDone; echo -e "\033[7m \033[0m" #Draw the bar PUT 4 15; printf "%8.8s " "$3" #Print the percentage PUT 4 40; printf "%8.8s " "$4" #Print the percentage tput sgr0 } # Start Script clear if ! [ -z "${1}" ] then if [ -d "${1}" ] then gitreppath="${1}" else echo "${1} is not a path" exit 1 fi fi branchges=$(${BINgit} -C "${gitreppath}" br -a | grep -v remotes | grep -v "remotes/origin/HEAD" | wc -l) activebranch="$(${BINgit} -C "${gitreppath}" branch | grep -E "^\*" | awk '{print $2}')" HIDECURSOR echo -e "" echo -e " GIT MODULE: ${gitreppath}" echo -e " UPDATE BRANCHES IS RUNNING" DRAW #magic starts here - must use caps in draw mode echo -e " lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk" echo -e " x x" echo -e " mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj" WRITE for f in $(${BINgit} -C "${gitreppath}" br -a | grep -v remotes | sed -E 's/\* //g' | awk '{print $1}') do showBar ${branchcounter} ${branchges} ${f} "[$((${branchcounter} + 1))/${branchges}]" #Call bar drawing function "showBar" ${BINgit} -C "${gitreppath}" checkout "${f}" --quiet && ${BINgit} -C ${gitreppath} pull --rebase origin "${f}" --quiet >/dev/null 2>&1 branchcounter=$((${branchcounter} + 1)) done showBar ${branchcounter} ${branchges} ${f} "[${branchcounter}/${branchges}]" #Call bar drawing function "showBar" ${BINgit} -C "${gitreppath}" checkout "${activebranch}" --quiet PUT 10 12 echo -e "" NORM