summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgit-base.sh25
-rwxr-xr-xprompt21
-rwxr-xr-xprompt.sh6
3 files changed, 46 insertions, 6 deletions
diff --git a/git-base.sh b/git-base.sh
index 87ad2cc..81616a5 100755
--- a/git-base.sh
+++ b/git-base.sh
@@ -444,3 +444,28 @@ bash_color_remote_commits() {
printf %s "$remote"
}
+
+zsh_color_remote_commits() {
+ local remote_master="\xF0\x9D\x98\xAE" # an italic m to represent master
+ local green_ahead_arrow="%{$fg_bold[green]%}←%{$reset_color%}"
+ local red_behind_arrow="%{$fg_bold[red]%}→%{$reset_color%}"
+ local yellow_diverged_arrow="%{$fg_bold[yellow]%}⇄%{$reset_color%}"
+ local not_upstream="%{$fg_bold[red]%}⚡%{$reset_color%}"
+
+ if remote_branch="$(remote_branch_name)"; then
+ remote_ahead="$(remote_ahead_of_master "$remote_branch")"
+ remote_behind="$(remote_behind_of_master "$remote_branch")"
+
+ if [[ "$remote_behind" -gt "0" && "$remote_ahead" -gt "0" ]]; then
+ remote="$remote_master $remote_behind $yellow_diverged_arrow $remote_ahead "
+ elif [[ "$remote_ahead" -gt "0" ]]; then
+ remote="$remote_master $green_ahead_arrow $remote_ahead "
+ elif [[ "$remote_behind" -gt "0" ]]; then
+ remote="$remote_master $remote_behind $red_behind_arrow "
+ fi
+ else
+ remote="upstream $not_upstream "
+ fi
+
+ printf %s "$remote"
+}
diff --git a/prompt b/prompt
new file mode 100755
index 0000000..6d5c71d
--- /dev/null
+++ b/prompt
@@ -0,0 +1,21 @@
+dot="$(cd "$(dirname "$0")"; pwd)"
+source "$dot/git-base.sh"
+
+command="$1"
+
+if [[ "$command" == "--zsh" ]]; then
+ git_prefix="%{$fg_bold[black]%}git:(%{$reset_color}"
+ git_suffix="%{$fg_bold[black]%})%{$reset_color}"
+ printf '%s' $git_prefix
+ zsh_color_remote_commits
+ branch_name
+ zsh_color_local_commits
+ printf '%s' $git_suffix
+ zsh_color_changes_status
+fi
+
+if [[ "$command" == "--bash" || "$command" == "" ]]; then
+ git_prefix="\033[1;30mgit:(\033[0m"
+ git_suffix="\033[1;30m)\033[0m"
+ echo "$git_prefix$(bash_color_remote_commits;readable_branch_name;bash_color_local_commits)$git_suffix$(bash_color_changes_status)"
+fi
diff --git a/prompt.sh b/prompt.sh
deleted file mode 100755
index 4501575..0000000
--- a/prompt.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-dot="$(cd "$(dirname "$0")"; pwd)"
-source "$dot/git-base.sh"
-
-prompt="$(bash_color_remote_commits)$(branch_name)$(bash_color_local_commits)$(bash_color_changes_status)"
-
-echo $prompt