43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/zsh
 | 
						|
 | 
						|
PS1__GET_DIRECTORY() {
 | 
						|
	local _DIRECTORY="%B%F{yellow}%6~"
 | 
						|
	local GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
 | 
						|
	[ $GIT_ROOT ] && {
 | 
						|
		local PROJECT_NAME=$(basename $GIT_ROOT)
 | 
						|
		[[ $PROJECT_NAME =~ ^code$ ]] && PROJECT_NAME=$(basename $(dirname $GIT_ROOT))
 | 
						|
 | 
						|
		local RESOLVED_WD=$(readlink -f "$(pwd)")
 | 
						|
		local RELATIVE_DIRECTORY=${${RESOLVED_WD#$GIT_ROOT}:1}
 | 
						|
		[[ ${#${RELATIVE_DIRECTORY//[^\/]}} -gt 3 ]] && RELATIVE_DIRECTORY='*/%4~'
 | 
						|
 | 
						|
		_DIRECTORY="%B%F{green}$PROJECT_NAME%B%F{yellow}:$RELATIVE_DIRECTORY"
 | 
						|
	}
 | 
						|
 | 
						|
	echo $_DIRECTORY
 | 
						|
}
 | 
						|
 | 
						|
PS1__GET_GIT_BRANCH() {
 | 
						|
	local _GIT_BRANCH=$(\
 | 
						|
		git branch --no-color 2>/dev/null \
 | 
						|
		| sed "/^[^*]/d; s/* \(.*\)/ %B%F{cyan}$PS1_BRANCH_SYMBOL \1/" \
 | 
						|
	)
 | 
						|
 | 
						|
	echo $_GIT_BRANCH
 | 
						|
}
 | 
						|
 | 
						|
GENERATE_PS1() {
 | 
						|
	local _INDICATOR="%B%(?.%F{green}.%F{red}) $PS1_INDICATOR_SYMBOL"
 | 
						|
	local _USER="%B%F{magenta}$PS1_USER"
 | 
						|
	local _SEPARATOR="%b%F{red}$PS1_SEPARATOR"
 | 
						|
	local _DIRECTORY='$(PS1__GET_DIRECTORY)'
 | 
						|
	local _GIT_BRANCH='$(PS1__GET_GIT_BRANCH)'
 | 
						|
 | 
						|
	local _PROMPT=$'\n'' %B%F{blue}%# %b%f'
 | 
						|
 | 
						|
	echo "$_INDICATOR $_USER $_SEPARATOR $_DIRECTORY $_GIT_BRANCH $_PROMPT"
 | 
						|
}
 | 
						|
 | 
						|
setopt PROMPT_SUBST
 | 
						|
export PS1="$(GENERATE_PS1)"
 |