a280726d934878a31f6dae35d8677a53551bbcf5

Author
Marc Cornellà <hello@mcornella.com>
Committer
Marc Cornellà <hello@mcornella.com>
Date

Message

fix(fossil): refactor `fossil_prompt_info` and quote % in branch

Diff

 1diff --git a/plugins/fossil/fossil.plugin.zsh b/plugins/fossil/fossil.plugin.zsh
 2index dfad73d36e74258cf4dd2d6661420d667416da18..a2123f415644c8eb51d641729213998defab2147 100644
 3--- a/plugins/fossil/fossil.plugin.zsh
 4+++ b/plugins/fossil/fossil.plugin.zsh
 5@@ -13,23 +13,25 @@ ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖"
 6 ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔"
 7 
 8 function fossil_prompt_info() {
 9-  local _OUTPUT=`fossil branch 2>&1`
10-  local _STATUS=`echo $_OUTPUT | grep "use --repo"`
11-  if [ "$_STATUS" = "" ]; then
12-    local _EDITED=`fossil changes`
13-    local _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
14-    local _BRANCH=`echo $_OUTPUT | grep "* " | sed 's/* //g'`
15-
16-    if [ "$_EDITED" != "" ]; then
17-      _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
18-    fi
19+  local info=$(fossil branch 2>&1)
20+
21+  # if we're not in a fossil repo, don't show anything
22+  ! command grep -q "use --repo" <<< "$info" || return
23 
24-    echo "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
25-      "$_BRANCH" \
26-      "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
27-      "$_EDITED_SYM"\
28-      "%{$reset_color%}"
29+  local branch=$(echo $info | grep "* " | sed 's/* //g')
30+  local changes=$(fossil changes)
31+  local dirty="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
32+
33+  if [[ -n "$changes" ]]; then
34+    dirty="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
35   fi
36+
37+  printf '%s %s %s %s %s' \
38+    "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
39+    "${branch:gs/%/%%}" \
40+    "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
41+    "$dirty" \
42+    "%{$reset_color%}"
43 }
44 
45 function _fossil_prompt () {