From c76dc91e02f7e8885e6eb71d725c21b15616ad05 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 20 Dec 2021 11:22:54 +0100 Subject: fix(svn): return true repo name in `svn_get_repo_name` --- plugins/svn/svn.plugin.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'plugins/svn') diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh index fbc9ee538..851f1a45e 100644 --- a/plugins/svn/svn.plugin.zsh +++ b/plugins/svn/svn.plugin.zsh @@ -19,10 +19,10 @@ in_svn() { } svn_get_repo_name() { - if in_svn; then - LANG=C svn info | sed -n 's/^Repository\ Root:\ .*\///p' | read SVN_ROOT - LANG=C svn info | sed -n "s/^URL:\ .*$SVN_ROOT\///p" - fi + local info name + info="${1:-$(LANG= svn info 2>/dev/null)}" + name="$(sed -n 's/^Repository\ Root:\ .*\///p' <<< "$info")" + omz_urldecode "$name" } svn_get_branch_name() { -- cgit v1.2.3-70-g09d2 From 93ec48fb0a798775b9e5d366c11a4ac3826c3ea4 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 20 Dec 2021 11:24:00 +0100 Subject: fix(svn): refactor and quote % characters in `svn_prompt_info` --- plugins/svn/svn.plugin.zsh | 104 +++++++++++++++++++++++---------------------- 1 file changed, 53 insertions(+), 51 deletions(-) (limited to 'plugins/svn') diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh index 851f1a45e..9c3b50d16 100644 --- a/plugins/svn/svn.plugin.zsh +++ b/plugins/svn/svn.plugin.zsh @@ -1,21 +1,28 @@ svn_prompt_info() { - local _DISPLAY - if in_svn; then - if [[ "$SVN_SHOW_BRANCH" = true ]]; then - unset SVN_SHOW_BRANCH - _DISPLAY=$(svn_get_branch_name) - else - _DISPLAY=$(svn_get_repo_name) - _DISPLAY=$(omz_urldecode "${_DISPLAY}") - fi - echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\ -$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$(svn_dirty_pwd)$ZSH_PROMPT_BASE_COLOR" + local info display + info="$(LANG= svn info 2>/dev/null)" || return 1 + + if [[ "$SVN_SHOW_BRANCH" = true ]]; then + display="$(svn_get_branch_name "$info")" + else + display="$(svn_get_repo_name "$info")" fi -} + printf '%s%s%s%s%s%s%s%s%s%s' \ + "$ZSH_PROMPT_BASE_COLOR" \ + "$ZSH_THEME_SVN_PROMPT_PREFIX" \ + "$ZSH_THEME_REPO_NAME_COLOR" \ + "${display:gs/%/%%}" \ + "$ZSH_PROMPT_BASE_COLOR" \ + "$ZSH_THEME_SVN_PROMPT_SUFFIX" \ + "$ZSH_PROMPT_BASE_COLOR" \ + "$(svn_dirty $info)" \ + "$(svn_dirty_pwd)" \ + "$ZSH_PROMPT_BASE_COLOR" +} in_svn() { - svn info >/dev/null 2>&1 + svn info &>/dev/null } svn_get_repo_name() { @@ -26,47 +33,44 @@ svn_get_repo_name() { } svn_get_branch_name() { - local _DISPLAY=$( - LANG=C svn info 2> /dev/null | \ - awk -F/ \ - '/^URL:/ { \ - for (i=0; i<=NF; i++) { \ - if ($i == "branches" || $i == "tags" ) { \ - print $(i+1); \ - break;\ - }; \ - if ($i == "trunk") { print $i; break; } \ - } \ - }' + local info branch + info="${1:-$(LANG= svn info 2>/dev/null)}" + branch=$( + awk -F/ '/^URL:/ { + for (i=0; i<=NF; i++) { + if ($i == "branches" || $i == "tags" ) { + print $(i+1) + break + }; + if ($i == "trunk") { + print $i + break + } + } + }' <<< "$info" ) + branch="$(omz_urldecode "$branch")" - if [[ -z "$_DISPLAY" ]]; then - svn_get_repo_name - else - echo $_DISPLAY - fi + echo "${branch:-$(svn_get_repo_name "$info")}" } svn_get_rev_nr() { - if in_svn; then - LANG=C svn info 2> /dev/null | sed -n 's/Revision:\ //p' - fi + sed -n 's/Revision:\ //p' "${1:-$(LANG= svn info 2>/dev/null)}" } svn_dirty() { - svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN + svn_dirty_choose "${1:-$(LANG= svn info 2>/dev/null)}" $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN } svn_dirty_choose() { - if in_svn; then - local root=$(LANG=C svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p') - if svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then - # Grep exits with 0 when "One or more lines were selected", return "dirty". - echo $1 - else - # Otherwise, no lines were found, or an error occurred. Return clean. - echo $2 - fi + local root + root=$(sed -n 's/^Working Copy Root Path: //p' <<< "${1:-$(LANG= svn info 2>/dev/null)}") + if LANG= svn status "$root" 2>/dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then + # Grep exits with 0 when "One or more lines were selected", return "dirty". + echo $1 + else + # Otherwise, no lines were found, or an error occurred. Return clean. + echo $2 fi } @@ -75,13 +79,11 @@ svn_dirty_pwd () { } svn_dirty_choose_pwd () { - if in_svn; then - if svn status "$PWD" 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then - # Grep exits with 0 when "One or more lines were selected", return "dirty". - echo $1 - else - # Otherwise, no lines were found, or an error occurred. Return clean. - echo $2 - fi + if LANG= svn status "$PWD" 2>/dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then + # Grep exits with 0 when "One or more lines were selected", return "dirty". + echo $1 + else + # Otherwise, no lines were found, or an error occurred. Return clean. + echo $2 fi } -- cgit v1.2.3-70-g09d2 From 71e6d5fde87be76205e87eed2e1a306a2f3bc5a8 Mon Sep 17 00:00:00 2001 From: Fabian Günter Date: Sat, 8 Jan 2022 19:59:59 +0100 Subject: fix(svn): fix output order in `svn_dirty_choose` (#10572) --- plugins/svn/svn.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'plugins/svn') diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh index 9c3b50d16..e55e5b2dd 100644 --- a/plugins/svn/svn.plugin.zsh +++ b/plugins/svn/svn.plugin.zsh @@ -67,10 +67,10 @@ svn_dirty_choose() { root=$(sed -n 's/^Working Copy Root Path: //p' <<< "${1:-$(LANG= svn info 2>/dev/null)}") if LANG= svn status "$root" 2>/dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then # Grep exits with 0 when "One or more lines were selected", return "dirty". - echo $1 + echo $2 else # Otherwise, no lines were found, or an error occurred. Return clean. - echo $2 + echo $3 fi } -- cgit v1.2.3-70-g09d2 From 1e277553bcc9f23a904bf728013df6ebfe339e74 Mon Sep 17 00:00:00 2001 From: Mykola Krachkovsky Date: Fri, 14 Jan 2022 16:28:39 +0200 Subject: fix(svn): fix sed call in `svn_get_rev_nr` (#10590) --- plugins/svn/svn.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'plugins/svn') diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh index e55e5b2dd..22b07b4ec 100644 --- a/plugins/svn/svn.plugin.zsh +++ b/plugins/svn/svn.plugin.zsh @@ -55,7 +55,7 @@ svn_get_branch_name() { } svn_get_rev_nr() { - sed -n 's/Revision:\ //p' "${1:-$(LANG= svn info 2>/dev/null)}" + sed -n 's/Revision:\ //p' <<<"${1:-$(LANG= svn info 2>/dev/null)}" } svn_dirty() { -- cgit v1.2.3-70-g09d2