summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Allen <michael@michaelallen.io>2015-09-14 17:22:01 +0100
committerMichael Allen <michael@michaelallen.io>2015-09-16 15:30:03 +0100
commit8c682d2abddd006398e9aed0a61212b4648b5a59 (patch)
tree6ec2b82e8f62b27baa6792e2b66e88513945d688
parent1f6a8f84946a0cb6936916f47b5a3870fa12a5a6 (diff)
downloadgit-sonar-8c682d2abddd006398e9aed0a61212b4648b5a59.tar.gz
git-sonar-8c682d2abddd006398e9aed0a61212b4648b5a59.zip
Basic approach to format strings
-rwxr-xr-xradar-base.sh17
-rwxr-xr-xtest-format-config.sh111
2 files changed, 128 insertions, 0 deletions
diff --git a/radar-base.sh b/radar-base.sh
index d9cd8f5..e21122a 100755
--- a/radar-base.sh
+++ b/radar-base.sh
@@ -65,6 +65,8 @@ prepare_zsh_colors() {
COLOR_BRANCH="%{${GIT_RADAR_COLOR_BRANCH:-$reset_color}%}"
MASTER_SYMBOL="${GIT_RADAR_MASTER_SYMBOL:-"%{$reset_color%}$italic_m%{$reset_color%}"}"
+ PROMPT_FORMAT="${GIT_RADAR_FORMAT:-""}"
+
RESET_COLOR_LOCAL="%{${GIT_RADAR_COLOR_LOCAL_RESET:-$reset_color}%}"
RESET_COLOR_REMOTE="%{${GIT_RADAR_COLOR_REMOTE_RESET:-$reset_color}%}"
RESET_COLOR_CHANGES="%{${GIT_RADAR_COLOR_CHANGES_RESET:-$reset_color}%}"
@@ -484,3 +486,18 @@ show_remote_status() {
fi
return 0
}
+
+render_prompt() {
+ if [[ $PROMPT_FORMAT =~ ^.*%{remote}.*$ ]]; then
+ zsh_color_remote_commits
+ fi
+ if [[ $PROMPT_FORMAT =~ ^.*%{branch}.*$ ]]; then
+ zsh_readable_branch_name
+ fi
+ if [[ $PROMPT_FORMAT =~ ^.*%{local}.*$ ]]; then
+ zsh_color_local_commits
+ fi
+ if [[ $PROMPT_FORMAT =~ ^.*%{changes}.*$ ]]; then
+ zsh_color_changes_status
+ fi
+}
diff --git a/test-format-config.sh b/test-format-config.sh
new file mode 100755
index 0000000..17c4bd6
--- /dev/null
+++ b/test-format-config.sh
@@ -0,0 +1,111 @@
+scriptDir="$(cd "$(dirname "$0")"; pwd)"
+
+source "$scriptDir/radar-base.sh"
+
+cd_to_tmp() {
+ tmpfile="/tmp/git-prompt-tests-$(time_now)$1"
+ mkdir -p "$tmpfile"
+ cd "$tmpfile"
+}
+
+rm_tmp() {
+ cd $scriptDir
+ rm -rf /tmp/git-prompt-tests*
+}
+
+unset_colours() {
+ export COLOR_REMOTE_AHEAD=""
+ export COLOR_REMOTE_BEHIND=""
+ export COLOR_REMOTE_DIVERGED=""
+ export COLOR_REMOTE_NOT_UPSTREAM=""
+
+ export COLOR_LOCAL_AHEAD=""
+ export COLOR_LOCAL_BEHIND=""
+ export COLOR_LOCAL_DIVERGED=""
+
+ export COLOR_CHANGES_STAGED=""
+ export COLOR_CHANGES_UNSTAGED=""
+ export COLOR_CHANGES_CONFLICTED=""
+ export COLOR_CHANGES_UNTRACKED=""
+
+ export COLOR_BRANCH=""
+ export MASTER_SYMBOL="m"
+
+ export RESET_COLOR_LOCAL=""
+ export RESET_COLOR_REMOTE=""
+ export RESET_COLOR_CHANGES=""
+ export RESET_COLOR_BRANCH=""
+}
+
+prepare_test_repo() {
+ cd_to_tmp "remote"
+
+ git init --quiet
+ touch README
+ git add .
+ git commit -m "initial commit" --quiet
+ origin="$(pwd)"
+
+ cd_to_tmp "new"
+ git init --quiet
+ git remote add origin $origin
+ git fetch origin --quiet
+ git checkout master --quiet
+ git checkout -b foo --quiet
+ git push --quiet -u origin foo >/dev/null
+ repo="$(pwd)"
+
+ cd "$origin"
+ echo "foo" > foo
+ git add .
+ git commit -m "remote commit" --quiet
+ cd "$repo"
+ echo "foo" > foo
+ git add .
+ git commit -m "local commit" --quiet
+ echo "foo" > bar
+ git fetch origin --quiet
+}
+
+test_all_options_set_config() {
+ prepare_test_repo
+
+ export GIT_RADAR_FORMAT="%{remote}%{branch}%{local}%{changes}"
+ prepare_zsh_colors
+ unset_colours
+
+ prompt="$(render_prompt)"
+ assertEquals "$prompt" "m 1 → foo 1↑ 1A"
+
+ export GIT_RADAR_FORMAT="%{remote}%{branch}%{changes}"
+ prepare_zsh_colors
+ unset_colours
+
+ prompt="$(render_prompt)"
+ assertEquals "$prompt" "m 1 → foo 1A"
+
+ export GIT_RADAR_FORMAT="%{branch}%{local}%{changes}"
+ prepare_zsh_colors
+ unset_colours
+
+ prompt="$(render_prompt)"
+ assertEquals "$prompt" "foo 1↑ 1A"
+
+ export GIT_RADAR_FORMAT="%{branch}%{changes}"
+ prepare_zsh_colors
+ unset_colours
+
+ prompt="$(render_prompt)"
+ assertEquals "$prompt" "foo 1A"
+
+ export GIT_RADAR_FORMAT="%{branch}"
+ prepare_zsh_colors
+ unset_colours
+
+ prompt="$(render_prompt)"
+ assertEquals "$prompt" "foo"
+
+ rm_tmp
+}
+
+. ./shunit/shunit2