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

[TG PATCH] Complete depend subcommand

From
Jonas Fonseca <fonseca@diku.dk>
Date
Sep 25, 2008, 13:47 UTC
Message-ID
<20080925134706.GA16533@diku.dk>
In-Reply-To
<20080925110656.GB12949@diku.dk>
Also, removes a debug line and fixes the script header.
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
---
 contrib/tg-completion.bash |   60 ++++++++++++++++++++++++++-----------------
 1 files changed, 36 insertions(+), 24 deletions(-)
 The completion of the depend command didn't make it into the first
 patch because I had a broken topgit usage. Here is a resend, which
 also amends the script header.
diff --git a/contrib/tg-completion.bash b/contrib/tg-completion.bash
index 35eabe9..59fbc50 100755
--- a/contrib/tg-completion.bash
+++ b/contrib/tg-completion.bash
@@ -7,32 +7,13 @@
 # Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
 # Distributed under the GNU General Public License, version 2.0.
 #
-# The contained completion routines provide support for completing:
-#
-#    *) local and remote branch names
-#    *) local and remote tag names
-#    *) .git/remotes file names
-#    *) git 'subcommands'
-#    *) tree paths within 'ref:path/to/file' expressions
-#    *) common --long-options
-#
 # To use these routines:
 #
-#    1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
-#    2) Added the following line to your .bashrc:
-#        source ~/.git-completion.sh
-#
-#    3) You may want to make sure the git executable is available
-#       in your PATH before this script is sourced, as some caching
-#       is performed while the script loads.  If git isn't found
-#       at source time then all lookups will be done on demand,
-#       which may be slightly slower.
+#    1) Copy this file to somewhere (e.g. ~/.tg-completion.sh).
+#    2) Source it from your ~/.bashrc.
 #
-#    4) Consider changing your PS1 to also show the current branch:
-#        PS1='[\u@\h \W$(__tg_ps1 " (%s)")]\$ '
-#
-#       The argument to __tg_ps1 will be displayed only if you
-#       are currently in a git repository.  The %s token will be
+# Note: Make sure the tg script is in your PATH before you source this
+# script, so it can properly setup cached values.
 
 case "$COMP_WORDBREAKS" in
 *:*) : great ;;
@@ -172,6 +153,22 @@ __tg_remotes ()
 	done
 }
 
+__tg_find_subcommand ()
+{
+	local word subcommand c=1
+
+	while [ $c -lt $COMP_CWORD ]; do
+		word="${COMP_WORDS[c]}"
+		for subcommand in $1; do
+			if [ "$subcommand" = "$word" ]; then
+				echo "$subcommand"
+				return
+			fi
+		done
+		c=$((++c))
+	done
+}
+
 __tg_complete_revlist ()
 {
 	local pfx cur="${COMP_WORDS[COMP_CWORD]}"
@@ -268,6 +265,21 @@ _tg_delete ()
 	esac
 }
 
+_tg_depend ()
+{
+	local subcommands="add"
+	local subcommand="$(__git_find_subcommand "$subcommands")"
+	if [ -z "$subcommand" ]; then
+		__tgcomp "$subcommands"
+		return
+	fi
+
+	case "$subcommand" in
+	add)
+		__tgcomp "$(__tg_refs)"
+	esac
+}
+
 _tg_export ()
 {
 	local cur="${COMP_WORDS[COMP_CWORD]}"
@@ -411,6 +423,7 @@ _tg ()
 	case "$command" in
 	create)      _tg_create "$c" ;;
 	delete)      _tg_delete ;;
+	depend)      _tg_depend ;;
 	export)      _tg_export ;;
 	help)        _tg_help ;;
 	import)      _tg_import ;;
@@ -426,7 +439,6 @@ _tg ()
 
 ### }}}
 
-	__tgcomp "$(__tg_refs top-bases)"
 complete -o default -o nospace -F _tg tg
 
 # The following are necessary only for Cygwin, and only are needed
-- 
tg: (43a8db8..) jf/completion-fixes (depends on: master)

-- 
Jonas Fonseca
Previous: Jonas Fonseca
Message 2 of 2 in “Add bash completion script for TopGit”
  1. Add bash completion script for TopGitJonas Fonseca, Sep 25, 2008
  2. Complete depend subcommandJonas Fonseca, Sep 25, 2008

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.