Bash : Prompt avec statut SVN

De Adadov.net wiki
Révision datée du 21 février 2012 à 13:28 par Adadov (discussion | contributions) (Page créée avec « <syntaxhighlight lang="bash"> # 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="#" ... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
# 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