git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 1/4] completion: bash: add __git_have_func helper

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Dec 30, 2020, 23:29 UTC
Message-ID
<20201230232950.582152-2-felipe.contreras@gmail.com>
In-Reply-To
<20201230232950.582152-1-felipe.contreras@gmail.com>

This makes the code more readable, and also will help when new code wants to do similar checks.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 contrib/completion/git-completion.bash | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 463a3124da..869c73ee2c 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -3358,15 +3358,19 @@ __git_support_parseopt_helper () {
 	esac
 }
 
+__git_have_func () {
+	declare -f $1 >/dev/null 2>/dev/null
+}
+
 __git_complete_command () {
 	local command="$1"
 	local completion_func="_git_${command//-/_}"
-	if ! declare -f $completion_func >/dev/null 2>/dev/null &&
-		declare -f _completion_loader >/dev/null 2>/dev/null
+	if ! __git_have_func $completion_func &&
+		__git_have_func _completion_loader
 	then
 		_completion_loader "git-$command"
 	fi
-	if declare -f $completion_func >/dev/null 2>/dev/null
+	if __git_have_func $completion_func
 	then
 		$completion_func
 		return 0
-- 
2.30.0
Previous: Felipe ContrerasNext: Felipe Contreras
Message 3 of 5 in “completion: make __git_complete public”
  1. 0/4 completion: make __git_complete publicFelipe Contreras, Dec 30, 2020
  2. 2/4 completion: bash: improve function detectionFelipe Contreras, Dec 30, 2020
  3. 1/4 completion: bash: add __git_have_func helperFelipe Contreras, Dec 30, 2020
  4. 3/4 test: completion: add tests for __git_completeFelipe Contreras, Dec 30, 2020
  5. 4/4 completion: add proper public __git_completeFelipe Contreras, Dec 30, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.