commit
6f47998906
@ -0,0 +1,2 @@ |
|||||||
|
*~ |
||||||
|
*.bak |
||||||
@ -0,0 +1,106 @@ |
|||||||
|
if not set -q __GIT_PROMPT_DIR |
||||||
|
set __GIT_PROMPT_DIR ~/.bash |
||||||
|
end |
||||||
|
|
||||||
|
# Colors |
||||||
|
# Reset |
||||||
|
set ResetColor (set_color normal) # Text Reset |
||||||
|
|
||||||
|
# Regular Colors |
||||||
|
set Red (set_color red) # Red |
||||||
|
set Yellow (set_color yellow); # Yellow |
||||||
|
set Blue (set_color blue) # Blue |
||||||
|
set WHITE (set_color white) |
||||||
|
|
||||||
|
# Bold |
||||||
|
set BGreen (set_color -o green) # Green |
||||||
|
|
||||||
|
# High Intensty |
||||||
|
set IBlack (set_color -o black) # Black |
||||||
|
|
||||||
|
# Bold High Intensty |
||||||
|
set Magenta (set_color -o purple) # Purple |
||||||
|
|
||||||
|
# Default values for the appearance of the prompt. Configure at will. |
||||||
|
set GIT_PROMPT_PREFIX "[" |
||||||
|
set GIT_PROMPT_SUFFIX "]" |
||||||
|
set GIT_PROMPT_SEPARATOR "|" |
||||||
|
set GIT_PROMPT_BRANCH "$Magenta" |
||||||
|
set GIT_PROMPT_STAGED "$Red● " |
||||||
|
set GIT_PROMPT_CONFLICTS "$Red✖ " |
||||||
|
set GIT_PROMPT_CHANGED "$Blue✚ " |
||||||
|
set GIT_PROMPT_REMOTE " " |
||||||
|
set GIT_PROMPT_UNTRACKED "…" |
||||||
|
set GIT_PROMPT_CLEAN "$BGreen✔" |
||||||
|
|
||||||
|
function fish_prompt |
||||||
|
|
||||||
|
# Various variables you might want for your PS1 prompt instead |
||||||
|
set Time (date +%R) |
||||||
|
set PathShort (pwd|sed "s=$HOME=~=") |
||||||
|
|
||||||
|
set PROMPT_START "$Yellow$PathShort$ResetColor" |
||||||
|
set PROMPT_END " \n$WHITE$Time$ResetColor \$ " |
||||||
|
|
||||||
|
set -e __CURRENT_GIT_STATUS |
||||||
|
set gitstatus "$__GIT_PROMPT_DIR/gitstatus.py" |
||||||
|
|
||||||
|
set _GIT_STATUS (python $gitstatus) |
||||||
|
set __CURRENT_GIT_STATUS $_GIT_STATUS |
||||||
|
|
||||||
|
set __CURRENT_GIT_STATUS_PARAM_COUNT (count $__CURRENT_GIT_STATUS) |
||||||
|
|
||||||
|
if not test "0" -eq $__CURRENT_GIT_STATUS_PARAM_COUNT |
||||||
|
set GIT_BRANCH $__CURRENT_GIT_STATUS[1] |
||||||
|
set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" |
||||||
|
if contains "." "$GIT_REMOTE" |
||||||
|
set -e GIT_REMOTE |
||||||
|
end |
||||||
|
set GIT_STAGED $__CURRENT_GIT_STATUS[3] |
||||||
|
set GIT_CONFLICTS $__CURRENT_GIT_STATUS[4] |
||||||
|
set GIT_CHANGED $__CURRENT_GIT_STATUS[5] |
||||||
|
set GIT_UNTRACKED $__CURRENT_GIT_STATUS[6] |
||||||
|
set GIT_CLEAN $__CURRENT_GIT_STATUS[7] |
||||||
|
end |
||||||
|
|
||||||
|
if test -n "$__CURRENT_GIT_STATUS" |
||||||
|
set STATUS " $GIT_PROMPT_PREFIX$GIT_PROMPT_BRANCH$GIT_BRANCH$ResetColor" |
||||||
|
|
||||||
|
if set -q GIT_REMOTE |
||||||
|
set STATUS "$STATUS$GIT_PROMPT_REMOTE$GIT_REMOTE$ResetColor" |
||||||
|
end |
||||||
|
|
||||||
|
set STATUS "$STATUS$GIT_PROMPT_SEPARATOR" |
||||||
|
|
||||||
|
if [ $GIT_STAGED != "0" ] |
||||||
|
set STATUS "$STATUS$GIT_PROMPT_STAGED$GIT_STAGED$ResetColor" |
||||||
|
end |
||||||
|
|
||||||
|
if [ $GIT_CONFLICTS != "0" ] |
||||||
|
set STATUS "$STATUS$GIT_PROMPT_CONFLICTS$GIT_CONFLICTS$ResetColor" |
||||||
|
end |
||||||
|
|
||||||
|
if [ $GIT_CHANGED != "0" ] |
||||||
|
set STATUS "$STATUS$GIT_PROMPT_CHANGED$GIT_CHANGED$ResetColor" |
||||||
|
end |
||||||
|
|
||||||
|
if [ "$GIT_UNTRACKED" != "0" ] |
||||||
|
set STATUS "$STATUS$GIT_PROMPT_UNTRACKED$GIT_UNTRACKED$ResetColor" |
||||||
|
end |
||||||
|
|
||||||
|
if [ "$GIT_CLEAN" = "1" ] |
||||||
|
set STATUS "$STATUS$GIT_PROMPT_CLEAN" |
||||||
|
end |
||||||
|
|
||||||
|
set STATUS "$STATUS$ResetColor$GIT_PROMPT_SUFFIX" |
||||||
|
|
||||||
|
set PS1 "$PROMPT_START$STATUS$PROMPT_END" |
||||||
|
else |
||||||
|
set PS1 "$PROMPT_START$PROMPT_END" |
||||||
|
end |
||||||
|
|
||||||
|
echo -e $PS1 |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 22 KiB |
@ -1,120 +1,181 @@ |
|||||||
#!/bin/bash |
#!/bin/sh |
||||||
# assume the gitstatus.py is in the same directory as this script |
|
||||||
# code thanks to http://stackoverflow.com/questions/59895 |
function git_prompt_dir() |
||||||
if [ -z "$__GIT_PROMPT_DIR" ] ; then |
{ |
||||||
SOURCE="${BASH_SOURCE[0]}" |
# assume the gitstatus.py is in the same directory as this script |
||||||
while [ -h "$SOURCE" ] ; do |
# code thanks to http://stackoverflow.com/questions/59895 |
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" |
if [ -z "${__GIT_PROMPT_DIR}" ]; then |
||||||
SOURCE="$(readlink "$SOURCE")" |
local SOURCE="${BASH_SOURCE[0]}" |
||||||
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" |
while [ -h "${SOURCE}" ]; do |
||||||
|
local DIR="$( cd -P "$( dirname "${SOURCE}" )" && pwd )" |
||||||
|
SOURCE="$(readlink "${SOURCE}")" |
||||||
|
[[ $SOURCE != /* ]] && SOURCE="${DIR}/${SOURCE}" |
||||||
done |
done |
||||||
__GIT_PROMPT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" |
__GIT_PROMPT_DIR="$( cd -P "$( dirname "${SOURCE}" )" && pwd )" |
||||||
fi |
fi |
||||||
|
} |
||||||
|
|
||||||
# Colors |
function git_prompt_config() |
||||||
# Reset |
{ |
||||||
ResetColor="\[\033[0m\]" # Text Reset |
# Colors |
||||||
|
ResetColor="\[\033[0m\]" # Text reset |
||||||
# Regular Colors |
|
||||||
Red="\[\033[0;31m\]" # Red |
# Bold |
||||||
Yellow="\[\033[0;33m\]" # Yellow |
local BoldGreen="\[\033[1;32m\]" # Green |
||||||
Blue="\[\033[0;34m\]" # Blue |
local BoldBlue="\[\033[1;34m\]" # Blue |
||||||
WHITE='\[\033[37m\]' |
|
||||||
|
# High Intensty |
||||||
# Bold |
local IntenseBlack="\[\033[0;90m\]" # Grey |
||||||
BGreen="\[\033[1;32m\]" # Green |
|
||||||
|
# Bold High Intensty |
||||||
# High Intensty |
local Magenta="\[\033[1;95m\]" # Purple |
||||||
IBlack="\[\033[0;90m\]" # Black |
|
||||||
|
# Regular Colors |
||||||
# Bold High Intensty |
local Yellow="\[\033[0;33m\]" |
||||||
Magenta="\[\033[1;95m\]" # Purple |
local White='\[\033[37m\]' |
||||||
|
local Red="\[\033[0;31m\]" |
||||||
# Various variables you might want for your PS1 prompt instead |
local Blue="\[\033[0;34m\]" |
||||||
#Time12a="\@" |
|
||||||
Time12a="(\$(date +%H:%M:%S))" |
# Default values for the appearance of the prompt. Configure at will. |
||||||
PathShort="\w" |
GIT_PROMPT_PREFIX="[" |
||||||
|
GIT_PROMPT_SUFFIX="]" |
||||||
# Default values for the appearance of the prompt. Configure at will. |
GIT_PROMPT_SEPARATOR="|" |
||||||
GIT_PROMPT_PREFIX="[" |
GIT_PROMPT_BRANCH="${Magenta}" |
||||||
GIT_PROMPT_SUFFIX="]" |
GIT_PROMPT_STAGED="${Red}● " |
||||||
GIT_PROMPT_SEPARATOR="|" |
GIT_PROMPT_CONFLICTS="${Red}✖ " |
||||||
GIT_PROMPT_BRANCH="${Magenta}" |
GIT_PROMPT_CHANGED="${Blue}✚ " |
||||||
GIT_PROMPT_STAGED="${Red}● " |
GIT_PROMPT_REMOTE=" " |
||||||
GIT_PROMPT_CONFLICTS="${Red}✖ " |
GIT_PROMPT_UNTRACKED="…" |
||||||
GIT_PROMPT_CHANGED="${Blue}✚ " |
GIT_PROMPT_CLEAN="${BoldGreen}✔" |
||||||
GIT_PROMPT_REMOTE=" " |
|
||||||
GIT_PROMPT_UNTRACKED="…" |
# Various variables you might want for your PS1 prompt instead |
||||||
GIT_PROMPT_CLEAN="${BGreen}✔" |
local Time12a="\$(date +%H:%M)" |
||||||
|
# local Time12a="(\$(date +%H:%M:%S))" |
||||||
PROMPT_START="$Yellow$PathShort$ResetColor" |
# local Time12a="(\@))" |
||||||
PROMPT_END=" \n$WHITE$Time12a$ResetColor $ " |
local PathShort="\w" |
||||||
if [ -z "$OLDPROMPT" ] ; then |
|
||||||
export OLDPROMPT=$PS1 |
if [ "x${GIT_PROMPT_START}" == "x" ]; then |
||||||
fi |
PROMPT_START="${Yellow}${PathShort}${ResetColor}" |
||||||
|
else |
||||||
|
PROMPT_START="${GIT_PROMPT_START}" |
||||||
|
fi |
||||||
|
|
||||||
function update_current_git_vars() { |
if [ "x${GIT_PROMPT_END}" == "x" ]; then |
||||||
unset __CURRENT_GIT_STATUS |
PROMPT_END=" \n${White}${Time12a}${ResetColor} $ " |
||||||
local gitstatus="${__GIT_PROMPT_DIR}/gitstatus.py" |
else |
||||||
|
PROMPT_END="${GIT_PROMPT_END}" |
||||||
|
fi |
||||||
|
|
||||||
_GIT_STATUS=$(python $gitstatus) |
EMPTY_PROMPT="${PROMPT_START}${PROMPT_END}" |
||||||
__CURRENT_GIT_STATUS=($_GIT_STATUS) |
|
||||||
GIT_BRANCH=${__CURRENT_GIT_STATUS[0]} |
# fetch remote revisions every other $GIT_PROMPT_FETCH_TIMEOUT (default 5) minutes |
||||||
GIT_REMOTE=${__CURRENT_GIT_STATUS[1]} |
GIT_PROMPT_FETCH_TIMEOUT=${1-5} |
||||||
if [[ "." == "$GIT_REMOTE" ]]; then |
if [ "x$__GIT_STATUS_CMD" == "x" ] |
||||||
unset GIT_REMOTE |
then |
||||||
|
git_prompt_dir |
||||||
|
__GIT_STATUS_CMD="${__GIT_PROMPT_DIR}/gitstatus.py" |
||||||
fi |
fi |
||||||
GIT_STAGED=${__CURRENT_GIT_STATUS[2]} |
|
||||||
GIT_CONFLICTS=${__CURRENT_GIT_STATUS[3]} |
|
||||||
GIT_CHANGED=${__CURRENT_GIT_STATUS[4]} |
|
||||||
GIT_UNTRACKED=${__CURRENT_GIT_STATUS[5]} |
|
||||||
GIT_CLEAN=${__CURRENT_GIT_STATUS[6]} |
|
||||||
} |
} |
||||||
|
|
||||||
function setGitPrompt() { |
function setGitPrompt() { |
||||||
update_current_git_vars |
|
||||||
set_virtualenv |
|
||||||
|
|
||||||
if [ -n "$__CURRENT_GIT_STATUS" ]; then |
local GIT_PROMPT_PREFIX |
||||||
STATUS=" $GIT_PROMPT_PREFIX$GIT_PROMPT_BRANCH$GIT_BRANCH$ResetColor" |
local GIT_PROMPT_SUFFIX |
||||||
|
local GIT_PROMPT_SEPARATOR |
||||||
|
local GIT_PROMPT_BRANCH |
||||||
|
local GIT_PROMPT_STAGED |
||||||
|
local GIT_PROMPT_CONFLICTS |
||||||
|
local GIT_PROMPT_CHANGED |
||||||
|
local GIT_PROMPT_REMOTE |
||||||
|
local GIT_PROMPT_UNTRACKED |
||||||
|
local GIT_PROMPT_CLEAN |
||||||
|
local PROMPT_START |
||||||
|
local PROMPT_END |
||||||
|
local EMPTY_PROMPT |
||||||
|
local ResetColor |
||||||
|
local Blue |
||||||
|
local GIT_PROMPT_FETCH_TIMEOUT |
||||||
|
local __GIT_STATUS_CMD |
||||||
|
|
||||||
|
git_prompt_config |
||||||
|
|
||||||
|
EMPTY_PROMPT=${OLD_GITPROMPT} |
||||||
|
|
||||||
|
local repo=`git rev-parse --show-toplevel 2> /dev/null` |
||||||
|
if [[ ! -e "${repo}" ]]; then |
||||||
|
PS1="${EMPTY_PROMPT}" |
||||||
|
return |
||||||
|
fi |
||||||
|
|
||||||
if [ -n "$GIT_REMOTE" ]; then |
local FETCH_HEAD="${repo}/.git/FETCH_HEAD" |
||||||
STATUS="$STATUS$GIT_PROMPT_REMOTE$GIT_REMOTE$ResetColor" |
# Fech repo if local is stale for more than $GIT_FETCH_TIMEOUT minutes |
||||||
|
if [[ ! -e "${FETCH_HEAD}" || -e `find ${FETCH_HEAD} -mmin +${GIT_PROMPT_FETCH_TIMEOUT}` ]] |
||||||
|
then |
||||||
|
[[ -n $(git remote show) ]] && git fetch --quiet |
||||||
fi |
fi |
||||||
|
|
||||||
STATUS="$STATUS$GIT_PROMPT_SEPARATOR" |
local -a GitStatus |
||||||
if [ "$GIT_STAGED" -ne "0" ]; then |
GitStatus=($("${__GIT_STATUS_CMD}" 2>/dev/null)) |
||||||
STATUS="$STATUS$GIT_PROMPT_STAGED$GIT_STAGED$ResetColor" |
|
||||||
|
local GIT_BRANCH=${GitStatus[0]} |
||||||
|
local GIT_REMOTE=${GitStatus[1]} |
||||||
|
if [[ "." == "$GIT_REMOTE" ]]; then |
||||||
|
unset GIT_REMOTE |
||||||
fi |
fi |
||||||
|
local GIT_STAGED=${GitStatus[2]} |
||||||
|
local GIT_CONFLICTS=${GitStatus[3]} |
||||||
|
local GIT_CHANGED=${GitStatus[4]} |
||||||
|
local GIT_UNTRACKED=${GitStatus[5]} |
||||||
|
local GIT_CLEAN=${GitStatus[6]} |
||||||
|
|
||||||
|
if [[ -n "${GitStatus}" ]]; then |
||||||
|
local STATUS=" ${GIT_PROMPT_PREFIX}${GIT_PROMPT_BRANCH}${GIT_BRANCH}${ResetColor}" |
||||||
|
|
||||||
if [ "$GIT_CONFLICTS" -ne "0" ]; then |
if [[ -n "${GIT_REMOTE}" ]]; then |
||||||
STATUS="$STATUS$GIT_PROMPT_CONFLICTS$GIT_CONFLICTS$ResetColor" |
STATUS="${STATUS}${GIT_PROMPT_REMOTE}${GIT_REMOTE}${ResetColor}" |
||||||
fi |
fi |
||||||
if [ "$GIT_CHANGED" -ne "0" ]; then |
|
||||||
STATUS="$STATUS$GIT_PROMPT_CHANGED$GIT_CHANGED$ResetColor" |
STATUS="${STATUS}${GIT_PROMPT_SEPARATOR}" |
||||||
|
if [ "${GIT_STAGED}" -ne "0" ]; then |
||||||
|
STATUS="${STATUS}${GIT_PROMPT_STAGED}${GIT_STAGED}${ResetColor}" |
||||||
fi |
fi |
||||||
if [ "$GIT_UNTRACKED" -ne "0" ]; then |
|
||||||
STATUS="$STATUS$GIT_PROMPT_UNTRACKED$GIT_UNTRACKED$ResetColor" |
if [ "${GIT_CONFLICTS}" -ne "0" ]; then |
||||||
|
STATUS="${STATUS}${GIT_PROMPT_CONFLICTS}${GIT_CONFLICTS}${ResetColor}" |
||||||
fi |
fi |
||||||
if [ "$GIT_CLEAN" -eq "1" ]; then |
|
||||||
STATUS="$STATUS$GIT_PROMPT_CLEAN" |
if [ "${GIT_CHANGED}" -ne "0" ]; then |
||||||
|
STATUS="${STATUS}${GIT_PROMPT_CHANGED}${GIT_CHANGED}${ResetColor}" |
||||||
fi |
fi |
||||||
STATUS="$STATUS$ResetColor$GIT_PROMPT_SUFFIX" |
|
||||||
|
|
||||||
PS1="$PYTHON_VIRTUALENV$PROMPT_START$STATUS$PROMPT_END" |
if [ "${GIT_UNTRACKED}" -ne "0" ]; then |
||||||
else |
STATUS="${STATUS}${GIT_PROMPT_UNTRACKED}${GIT_UNTRACKED}${ResetColor}" |
||||||
#PS1="$PROMPT_START$PROMPT_END" |
fi |
||||||
PS1=$OLDPROMPT |
|
||||||
|
if [ "${GIT_CLEAN}" -eq "1" ]; then |
||||||
|
STATUS="${STATUS}${GIT_PROMPT_CLEAN}" |
||||||
|
fi |
||||||
|
|
||||||
|
STATUS="${STATUS}${ResetColor}${GIT_PROMPT_SUFFIX}" |
||||||
|
|
||||||
|
|
||||||
|
PS1="${PROMPT_START}${STATUS}${PROMPT_END}" |
||||||
|
if [[ -n "${VIRTUAL_ENV}" ]]; then |
||||||
|
PS1="${Blue}($(basename "${VIRTUAL_ENV}"))${ResetColor} ${PS1}" |
||||||
fi |
fi |
||||||
} |
|
||||||
|
|
||||||
# Determine active Python virtualenv details. |
|
||||||
function set_virtualenv () { |
|
||||||
if test -z "$VIRTUAL_ENV" ; then |
|
||||||
PYTHON_VIRTUALENV="" |
|
||||||
else |
else |
||||||
PYTHON_VIRTUALENV="${BLUE}(`basename \"$VIRTUAL_ENV\"`)${ResetColor} " |
PS1="${EMPTY_PROMPT}" |
||||||
fi |
fi |
||||||
} |
} |
||||||
|
|
||||||
PROMPT_COMMAND=setGitPrompt |
if [ -z "$OLD_GITPROMPT" ]; then |
||||||
|
OLD_GITPROMPT=$PS1 |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -z "$PROMPT_COMMAND" ]; then |
||||||
|
PROMPT_COMMAND=setGitPrompt |
||||||
|
else |
||||||
|
PROMPT_COMMAND="$PROMPT_COMMAND;setGitPrompt" |
||||||
|
fi |
||||||
|
|
||||||
|
|||||||
Loading…
Reference in new issue