Skip to content
Snippets Groups Projects
Select Git revision
  • 8c86f455ecc445b2d3a52dae71d56f37f2f7999d
  • master default protected
  • commit-alias
  • editor-modeline
  • commit-abbreviation
  • make-hooks-work-as-advertised
  • lyda-home-version
  • feature-aliases
  • git-version-bsd-fix
  • hook-changes
  • v1.20151229-1
  • v1.20151229
  • v1.20150502-1
  • v1.20150502
  • v1.20141026-manpage-static
  • v1.20141026-1
  • v1.20141026
  • v1.20141025-1
  • v1.20141025
  • v1.20141009-manpage-static
  • v1.20141009-1
  • v1.20141009
  • v1.20140508-1-bpo70+1
  • v1.20140508-1
  • v1.20140508-manpage-static
  • v1.20140508
  • v1.20140507
  • v1.20140313
  • v1.20131229-homebrew
  • v1.20131229-1-bpo60+1
30 results

_vcsh

Blame
  • _vcsh 2.86 KiB
    #compdef vcsh
    
    function __vcsh_repositories () {
    	local expl
    	local -a repos
    	repos=( ${(f)"$(command vcsh list)"} )
    	_describe -t repos 'repositories' repos
    }
    
    function __vcsh_not_implemented_yet () {
    	_message "Subcommand completion '${1#*-}': not implemented yet"
    }
    
    function _vcsh-clone () {
    	__vcsh_not_implemented_yet "$0" #TODO
    }
    
    function _vcsh-delete () {
    	(( CURRENT == 2 )) && __vcsh_repositories
    }
    
    function _vcsh-enter () {
    	(( CURRENT == 2 )) && __vcsh_repositories
    }
    
    function _vcsh-help () {
    	_nothing
    }
    
    function _vcsh-init () {
    	_nothing
    }
    
    function _vcsh-list () {
    	_nothing
    }
    
    function _vcsh-list-tracked () {
    	_nothing
    }
    
    function _vcsh-list-tracked-by () {
    	(( CURRENT == 2 )) && __vcsh_repositories
    }
    
    function _vcsh-pull () {
    	_nothing
    }
    
    function _vcsh-push () {
    	_nothing
    }
    
    function _vcsh-rename () {
    	(( CURRENT == 2 )) && __vcsh_repositories
    	(( CURRENT == 3 )) && _message "new repository name"
    	(( CURRENT > 3 )) && _nothing
    }
    
    function _vcsh-run () {
    	(( CURRENT == 2 )) && __vcsh_repositories
    	if (( CURRENT >= 3 )); then
    		words=( "${(@)words[3,-1]}" )
    		(( CURRENT -= 2 ))
    		_complete
    	fi
    }
    
    function _vcsh-upgrade () {
    	(( CURRENT == 2 )) && __vcsh_repositories
    }
    
    function _vcsh-version () {
    	_nothing
    }
    
    function _vcsh-which () {
    	_files
    }
    
    function _vcsh-write-gitignore () {
    	(( CURRENT == 2 )) && __vcsh_repositories
    }
    
    function _vcsh () {
    	local curcontext="${curcontext}"
    	local state vcshcommand
    	local -a args subcommands
    
    	subcommands=(
    		"clone:clone an existing repository"
    		"delete:delete an existing repository"
    		"enter:enter repository; spawn new <\$SHELL>"
    		"help:display help"
    		"init:initialize an empty repository"
    		"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"
    		"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"
    	)
    
    	args=(
    		'-c[source <file> prior to other configuration files]:config files:_path_files'
    		'-d[enable debug mode]'
    		'-v[enable verbose mode]'
    		'*:: :->subcommand_or_options_or_repo'
    	)
    
    	_arguments -C ${args} && return
    
    	if [[ ${state} == "subcommand_or_options_or_repo" ]]; then
    		if (( CURRENT == 1 )); then
    			_describe -t subcommands 'vcsh sub-commands' subcommands
    			__vcsh_repositories
    		else
    			vcshcommand="${words[1]}"
    			if ! (( ${+functions[_vcsh-$vcshcommand]} )); then
    				# There is no handler function, so this is probably the name
    				# of a repository. Act accordingly.
    				_dispatch git git
    			else
    				curcontext="${curcontext%:*:*}:vcsh-${vcshcommand}:"
    				_call_function ret _vcsh-${vcshcommand}
    			fi
    		fi
    	fi
    }
    
    _vcsh "$@"