update
This commit is contained in:
117
.iterm2/it2git
Executable file
117
.iterm2/it2git
Executable file
@@ -0,0 +1,117 @@
|
||||
#!/usr/bin/env bash
|
||||
# This script sets iTerm2 user-defined variables describing the state of the git
|
||||
# repo in the current directory.
|
||||
#
|
||||
# For more information on the status bar, see:
|
||||
# https://www.iterm2.com/3.3/documentation-status-bar.html
|
||||
#
|
||||
# Installation instructions for this script:
|
||||
#
|
||||
# bash: Place this in .bashrc.
|
||||
# --------------------------------------------------------------------------------------
|
||||
# function iterm2_print_user_vars() {
|
||||
# it2git
|
||||
# }
|
||||
|
||||
# fish: Place this in ~/.config/fish/config.fish after the line
|
||||
# "source ~/.iterm2_shell_integration.fish".
|
||||
# --------------------------------------------------------------------------------------
|
||||
# function iterm2_print_user_vars
|
||||
# it2git
|
||||
# end
|
||||
|
||||
# tcsh: Place this in .tcshrc
|
||||
# --------------------------------------------------------------------------------------
|
||||
# alias get_current_branch "bash -c '((git branch 2> /dev/null) | grep \* | cut -c3-)'"
|
||||
# alias _iterm2_user_defined_vars 'it2git'
|
||||
|
||||
# zsh:Place this in .zshrc after "source /Users/georgen/.iterm2_shell_integration.zsh".
|
||||
# --------------------------------------------------------------------------------------
|
||||
# iterm2_print_user_vars() {
|
||||
# it2git
|
||||
# }
|
||||
|
||||
GIT_BINARY=/usr/bin/git
|
||||
|
||||
dirty() {
|
||||
# Outputs "dirty" or "clean"
|
||||
OUTPUT=$("$GIT_BINARY" status --porcelain --ignore-submodules -unormal 2>/dev/null)
|
||||
if (($?)); then
|
||||
echo "clean"
|
||||
return
|
||||
fi
|
||||
if [ -z "$OUTPUT" ]; then
|
||||
echo "clean"
|
||||
else
|
||||
echo "dirty"
|
||||
fi
|
||||
}
|
||||
|
||||
counts() {
|
||||
OUTPUT=$("$GIT_BINARY" rev-list --left-right --count HEAD...@'{u}' 2>/dev/null)
|
||||
if (($?)); then
|
||||
echo "error"
|
||||
return
|
||||
fi
|
||||
echo "$OUTPUT"
|
||||
}
|
||||
|
||||
branch() {
|
||||
OUTPUT=$("$GIT_BINARY" symbolic-ref -q --short HEAD 2>/dev/null || git rev-parse --short HEAD 2>/dev/null)
|
||||
if (($?)); then
|
||||
return
|
||||
fi
|
||||
echo "$OUTPUT"
|
||||
}
|
||||
|
||||
adds() {
|
||||
"${GIT_BINARY}" ls-files --others --exclude-standard | wc -l
|
||||
}
|
||||
|
||||
deletes() {
|
||||
"${GIT_BINARY}" ls-files --deleted --exclude-standard | wc -l
|
||||
}
|
||||
function iterm2_begin_osc {
|
||||
printf "\033]"
|
||||
}
|
||||
|
||||
function iterm2_end_osc {
|
||||
printf "\007"
|
||||
}
|
||||
|
||||
function iterm2_set_user_var() {
|
||||
iterm2_begin_osc
|
||||
printf "1337;SetUserVar=%s=%s" "$1" $(printf "%s" "$2" | base64 | tr -d '\n')
|
||||
iterm2_end_osc
|
||||
}
|
||||
|
||||
git_poll () {
|
||||
DIRECTORY="$1"
|
||||
cd "$DIRECTORY"
|
||||
DIRTY=$(dirty)
|
||||
COUNTS=$(counts)
|
||||
PUSH_COUNT=$(cut -f1 <<< "$COUNTS")
|
||||
PULL_COUNT=$(cut -f2 <<< "$COUNTS")
|
||||
BRANCH=$(branch)
|
||||
|
||||
iterm2_set_user_var gitBranch "$BRANCH"
|
||||
iterm2_set_user_var gitDirty "$DIRTY"
|
||||
iterm2_set_user_var gitPushCount "$PUSH_COUNT"
|
||||
iterm2_set_user_var gitPullCount "$PULL_COUNT"
|
||||
iterm2_set_user_var gitAdds "$ADDS"
|
||||
iterm2_set_user_var gitDeletes "$DELETES"
|
||||
}
|
||||
|
||||
"$GIT_BINARY" rev-parse --git-dir 2>/dev/null >/dev/null
|
||||
if (($?)); then
|
||||
iterm2_set_user_var gitBranch ""
|
||||
iterm2_set_user_var gitDirty ""
|
||||
iterm2_set_user_var gitPushCount ""
|
||||
iterm2_set_user_var gitPullCount ""
|
||||
iterm2_set_user_var gitAdds ""
|
||||
iterm2_set_user_var gitDeletes ""
|
||||
else
|
||||
git_poll "$PWD"
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user