Bash : Prompt avec statut SVN
C'est suite à la lecture de cet article que j'ai décidé moi aussi de rafraîchir mon prompt.
Donc j'ai décidé de faire une petite variante, pour ma part je n'utilise pas GIT mais SVN. Donc je reprends le même principe mais pour SVN.
# Colors
NoColor="\e[0;0m"
Cyan="\e[0;36m"
Green="\e[0;32m"
Red="\e[0;31m"
Yellow="\e[0;33m"
# Prompts chars
UserPrompt="$"
RootPrompt="#"
# Contextual prompt
prompt() {
USERNAME=`whoami`
HOSTNAME=`hostname`
CURRENTPATH=`pwd | sed "s|$HOME|~|g"`
LEFTPROMPT=$Cyan$USERNAME@$HOSTNAME":"$Yellow$CURRENTPATH
let LEFTSIZE=$(echo -n "$USERNAME@$HOSTNAME:$CURRENTPATH" | wc -c)
RIGHTPROMPT=""
let RIGHTSIZE=0
SVNSTATUS=$(svn status 2>&1)
echo $SVNSTATUS | grep 'not a working copy' > /dev/null 2>&1
if [ $? -eq 1 ]; then
echo $SVNSTATUS | grep -P '^\s*[AMDCR]' 2>&1 > /dev/null
if [ $? -eq 0 ]; then
RIGHTPROMPT=$Red
else
RIGHTPROMPT=$Green
fi
BRANCH=$(svn info | grep 'Repository Root' | sed -r 's|^.*/([a-z]+)$|\1|')
RIGHTPROMPT=$RIGHTPROMPT"[SVN Repository $BRANCH]"
let RIGHTSIZE=$(echo -n "[SVN Repository $BRANCH]" | wc -c)
fi
let BLANCKSIZE=${COLUMNS}-${LEFTSIZE}-${RIGHTSIZE}
RIGHTPROMPT=$RIGHTPROMPT$NoColor
echo -e -n "\n"$LEFTPROMPT
printf "%$(($BLANCKSIZE))s"
echo -e $RIGHTPROMPT
}
# Main prompt
PROMPT_COMMAND="prompt;$PROMPT_COMMAND"
if [ $EUID -ne 0 ]; then
PS1=$UserPrompt" "
else
PS1=$RootPrompt" "
fi