Hi,

I would like to enable output without color.
I also have on the wish list to print passfile_dir with a leading slash.

best regards
-- 
Knut Olav Bøhmer
From e518473a6572b4d848ddbf9cafbc9ad0bca9459a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Knut=20Olav=20B=C3=B8hmer?= <[email protected]>
Date: Thu, 6 Oct 2022 16:30:15 +0200
Subject: [PATCH] Make cmd_grep understand --color

---
 src/password-store.sh | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/password-store.sh b/src/password-store.sh
index 22e818f..013ea51 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -419,16 +419,22 @@ cmd_find() {
 
 cmd_grep() {
 	[[ $# -lt 1 ]] && die "Usage: $PROGRAM $COMMAND [GREPOPTIONS] search-string"
-	local passfile grepresults
+	[[ "$@" =~ --color=(never)[[:space:]] ]]
+	local passfile grepresults color=${BASH_REMATCH[1]:-always}
 	while read -r -d "" passfile; do
-		grepresults="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | grep --color=always "$@")"
+		grepresults="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | grep --color=${color} "$@")"
 		[[ $? -ne 0 ]] && continue
 		passfile="${passfile%.gpg}"
 		passfile="${passfile#$PREFIX/}"
 		local passfile_dir="${passfile%/*}/"
 		[[ $passfile_dir == "${passfile}/" ]] && passfile_dir=""
 		passfile="${passfile##*/}"
-		printf "\e[94m%s\e[1m%s\e[0m:\n" "$passfile_dir" "$passfile"
+		if [[ $color == never ]]
+		then
+			printf "%s%s:\n" "$passfile_dir" "$passfile"
+		else
+			printf "\e[94m%s\e[1m%s\e[0m:\n" "$passfile_dir" "$passfile"
+		fi
 		echo "$grepresults"
 	done < <(find -L "$PREFIX" -path '*/.git' -prune -o -path '*/.extensions' -prune -o -iname '*.gpg' -print0)
 }
-- 
2.37.3

Reply via email to