« Bash : Prompt avec statut SVN » : différence entre les versions

De Adadov.net wiki
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 49 : Ligne 49 :


# Main prompt
# Main prompt
PROMPT_COMMAND=prompt
PROMPT_COMMAND="prompt;$PROMPT_COMMAND"
if [ $EUID -ne 0 ]; then
if [ $EUID -ne 0 ]; then
PS1=$UserPrompt" "
PS1=$UserPrompt" "

Version du 21 février 2012 à 12:56

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