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.
# 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
if [ $EUID -ne 0 ]; then
PS1=$UserPrompt" "
else
PS1=$RootPrompt" "
fi