diff options
Diffstat (limited to '.oh-my-zsh/plugins/git-prompt')
-rw-r--r-- | .oh-my-zsh/plugins/git-prompt/git-prompt.plugin.zsh | 92 | ||||
-rw-r--r-- | .oh-my-zsh/plugins/git-prompt/gitstatus.py | 84 |
2 files changed, 0 insertions, 176 deletions
diff --git a/.oh-my-zsh/plugins/git-prompt/git-prompt.plugin.zsh b/.oh-my-zsh/plugins/git-prompt/git-prompt.plugin.zsh deleted file mode 100644 index 2776f29..0000000 --- a/.oh-my-zsh/plugins/git-prompt/git-prompt.plugin.zsh +++ /dev/null @@ -1,92 +0,0 @@ -# ZSH Git Prompt Plugin from: -# https://github.com/olivierverdier/zsh-git-prompt - -__GIT_PROMPT_DIR="${0:A:h}" - -## Hook function definitions -function chpwd_update_git_vars() { - update_current_git_vars -} - -function preexec_update_git_vars() { - case "$2" in - git*|hub*|gh*|stg*) - __EXECUTED_GIT_COMMAND=1 - ;; - esac -} - -function precmd_update_git_vars() { - if [ -n "$__EXECUTED_GIT_COMMAND" ] || [ ! -n "$ZSH_THEME_GIT_PROMPT_CACHE" ]; then - update_current_git_vars - unset __EXECUTED_GIT_COMMAND - fi -} - -chpwd_functions+=(chpwd_update_git_vars) -precmd_functions+=(precmd_update_git_vars) -preexec_functions+=(preexec_update_git_vars) - - -## Function definitions -function update_current_git_vars() { - unset __CURRENT_GIT_STATUS - - local gitstatus="$__GIT_PROMPT_DIR/gitstatus.py" - _GIT_STATUS=$(python ${gitstatus} 2>/dev/null) - __CURRENT_GIT_STATUS=("${(@s: :)_GIT_STATUS}") - GIT_BRANCH=$__CURRENT_GIT_STATUS[1] - GIT_AHEAD=$__CURRENT_GIT_STATUS[2] - GIT_BEHIND=$__CURRENT_GIT_STATUS[3] - GIT_STAGED=$__CURRENT_GIT_STATUS[4] - GIT_CONFLICTS=$__CURRENT_GIT_STATUS[5] - GIT_CHANGED=$__CURRENT_GIT_STATUS[6] - GIT_UNTRACKED=$__CURRENT_GIT_STATUS[7] -} - -git_super_status() { - precmd_update_git_vars - if [ -n "$__CURRENT_GIT_STATUS" ]; then - STATUS="$ZSH_THEME_GIT_PROMPT_PREFIX$ZSH_THEME_GIT_PROMPT_BRANCH$GIT_BRANCH%{${reset_color}%}" - if [ "$GIT_BEHIND" -ne "0" ]; then - STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_BEHIND$GIT_BEHIND%{${reset_color}%}" - fi - if [ "$GIT_AHEAD" -ne "0" ]; then - STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_AHEAD$GIT_AHEAD%{${reset_color}%}" - fi - STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_SEPARATOR" - if [ "$GIT_STAGED" -ne "0" ]; then - STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_STAGED$GIT_STAGED%{${reset_color}%}" - fi - if [ "$GIT_CONFLICTS" -ne "0" ]; then - STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CONFLICTS$GIT_CONFLICTS%{${reset_color}%}" - fi - if [ "$GIT_CHANGED" -ne "0" ]; then - STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CHANGED$GIT_CHANGED%{${reset_color}%}" - fi - if [ "$GIT_UNTRACKED" -ne "0" ]; then - STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED%{${reset_color}%}" - fi - if [ "$GIT_CHANGED" -eq "0" ] && [ "$GIT_CONFLICTS" -eq "0" ] && [ "$GIT_STAGED" -eq "0" ] && [ "$GIT_UNTRACKED" -eq "0" ]; then - STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CLEAN" - fi - STATUS="$STATUS%{${reset_color}%}$ZSH_THEME_GIT_PROMPT_SUFFIX" - echo "$STATUS" - fi -} - -# Default values for the appearance of the prompt. -ZSH_THEME_GIT_PROMPT_PREFIX="(" -ZSH_THEME_GIT_PROMPT_SUFFIX=")" -ZSH_THEME_GIT_PROMPT_SEPARATOR="|" -ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_bold[magenta]%}" -ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[red]%}%{●%G%}" -ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg[red]%}%{✖%G%}" -ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg[blue]%}%{✚%G%}" -ZSH_THEME_GIT_PROMPT_BEHIND="%{↓%G%}" -ZSH_THEME_GIT_PROMPT_AHEAD="%{↑%G%}" -ZSH_THEME_GIT_PROMPT_UNTRACKED="%{…%G%}" -ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}%{✔%G%}" - -# Set the prompt. -RPROMPT='$(git_super_status)' diff --git a/.oh-my-zsh/plugins/git-prompt/gitstatus.py b/.oh-my-zsh/plugins/git-prompt/gitstatus.py deleted file mode 100644 index a4d07cd..0000000 --- a/.oh-my-zsh/plugins/git-prompt/gitstatus.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python -from __future__ import print_function - -import sys -import re -import shlex -from subprocess import Popen, PIPE, check_output - - -def get_tagname_or_hash(): - """return tagname if exists else hash""" - cmd = 'git log -1 --format="%h%d"' - output = check_output(shlex.split(cmd)).decode('utf-8').strip() - hash_, tagname = None, None - # get hash - m = re.search('\(.*\)$', output) - if m: - hash_ = output[:m.start()-1] - # get tagname - m = re.search('tag: .*[,\)]', output) - if m: - tagname = 'tags/' + output[m.start()+len('tag: '): m.end()-1] - - if tagname: - return tagname.replace(' ', '') - elif hash_: - return hash_ - return None - - -# `git status --porcelain --branch` can collect all information -# branch, remote_branch, untracked, staged, changed, conflicts, ahead, behind -po = Popen(['git', 'status', '--porcelain', '--branch'], stdout=PIPE, stderr=PIPE) -stdout, sterr = po.communicate() -if po.returncode != 0: - sys.exit(0) # Not a git repository - -# collect git status information -untracked, staged, changed, conflicts = [], [], [], [] -ahead, behind = 0, 0 -status = [(line[0], line[1], line[2:]) for line in stdout.decode('utf-8').splitlines()] -for st in status: - if st[0] == '#' and st[1] == '#': - if re.search('Initial commit on', st[2]) or re.search('No commits yet on', st[2]): - branch = st[2].split(' ')[-1] - elif re.search('no branch', st[2]): # detached status - branch = get_tagname_or_hash() - elif len(st[2].strip().split('...')) == 1: - branch = st[2].strip() - else: - # current and remote branch info - branch, rest = st[2].strip().split('...') - if len(rest.split(' ')) == 1: - # remote_branch = rest.split(' ')[0] - pass - else: - # ahead or behind - divergence = ' '.join(rest.split(' ')[1:]) - divergence = divergence.lstrip('[').rstrip(']') - for div in divergence.split(', '): - if 'ahead' in div: - ahead = int(div[len('ahead '):].strip()) - elif 'behind' in div: - behind = int(div[len('behind '):].strip()) - elif st[0] == '?' and st[1] == '?': - untracked.append(st) - else: - if st[1] == 'M': - changed.append(st) - if st[0] == 'U': - conflicts.append(st) - elif st[0] != ' ': - staged.append(st) - -out = ' '.join([ - branch, - str(ahead), - str(behind), - str(len(staged)), - str(len(conflicts)), - str(len(changed)), - str(len(untracked)), -]) -print(out, end='') |