X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/b04d813813ee5e0bd6d85debf23b2b5675e55347..a5872a1580e7d3c9d2104d45fc74d8c1ab001f1e:/_vcsh?ds=inline

diff --git a/_vcsh b/_vcsh
index 783cf10..47dbd9e 100644
--- a/_vcsh
+++ b/_vcsh
@@ -1,7 +1,6 @@
 #compdef vcsh
 
 function __vcsh_repositories () {
-	#TODO list only one repo and stop
 	local expl
 	local -a repos
 	repos=( ${(f)"$(command vcsh list)"} )
@@ -17,11 +16,11 @@ function _vcsh-clone () {
 }
 
 function _vcsh-delete () {
-	__vcsh_repositories
+	(( CURRENT == 2 )) && __vcsh_repositories
 }
 
 function _vcsh-enter () {
-	__vcsh_repositories
+	(( CURRENT == 2 )) && __vcsh_repositories
 }
 
 function _vcsh-help () {
@@ -41,33 +40,46 @@ function _vcsh-list-tracked () {
 }
 
 function _vcsh-list-tracked-by () {
-	__vcsh_repositories
+	(( CURRENT == 2 )) && __vcsh_repositories
+}
+
+function _vcsh-pull () {
+	_nothing
+}
+
+function _vcsh-push () {
+	_nothing
 }
 
 function _vcsh-rename () {
-	__vcsh_repositories
-	#TODO tell the user to write new stuff
+	(( CURRENT == 2 )) && __vcsh_repositories
+	(( CURRENT == 3 )) && _message "new repository name"
+	(( CURRENT > 3 )) && _nothing
 }
 
 function _vcsh-run () {
-	__vcsh_repositories
-	_commands
-	#TODO normal commands
+	(( CURRENT == 2 )) && __vcsh_repositories
+	if (( CURRENT >= 3 )); then
+		words=( "${(@)words[3,-1]}" )
+		(( CURRENT -= 2 ))
+		_complete
+	fi
 }
 
-function _vcsh-setup () {
-	__vcsh_repositories
+function _vcsh-upgrade () {
+	(( CURRENT == 2 )) && __vcsh_repositories
 }
 
 function _vcsh-version () {
+	_nothing
 }
 
 function _vcsh-which () {
-	__vcsh_not_implemented_yet "$0" #TODO
+	_files
 }
 
 function _vcsh-write-gitignore () {
-	__vcsh_repositories
+	(( CURRENT == 2 )) && __vcsh_repositories
 }
 
 function _vcsh () {
@@ -84,9 +96,10 @@ function _vcsh () {
 		"list:list all local vcsh repositories"
 		"list-tracked:list all files tracked by vcsh"
 		"list-tracked-by:list files tracked by a repository"
+		"pull:pull from all vcsh remotes"
 		"rename:rename a repository"
 		"run:run command with <\$GIT_DIR> and <\$GIT_WORK_TREE> set"
-		"setup:set up repository with recommended settings"
+		"upgrade:upgrade repository to currently recommended settings"
 		"version:print version information"
 		"which:find <substring> in name of any tracked file"
 		"write-gitignore:write .gitignore.d/<repo> via git ls-files"
@@ -110,8 +123,7 @@ function _vcsh () {
 			if ! (( ${+functions[_vcsh-$vcshcommand]} )); then
 				# There is no handler function, so this is probably the name
 				# of a repository. Act accordingly.
-				_message "git sub-command"
-				#TODO and now we need to complete on git subcommands
+				_dispatch git git
 			else
 				curcontext="${curcontext%:*:*}:vcsh-${vcshcommand}:"
 				_call_function ret _vcsh-${vcshcommand}