forked from colonelpanic/dotfiles
		
	tab completion for invoke.
This commit is contained in:
		
							
								
								
									
										44
									
								
								dotfiles/lib/completions/_invoke
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								dotfiles/lib/completions/_invoke
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
#compdef inv invoke
 | 
			
		||||
 | 
			
		||||
typeset -A opt_args
 | 
			
		||||
local context state line
 | 
			
		||||
 | 
			
		||||
_invoke_subcommand () {
 | 
			
		||||
  if [ -f tasks.py ]; then
 | 
			
		||||
    local cache_policy
 | 
			
		||||
    zstyle -s ":completion:${curcontext}:" cache-policy cache_policy
 | 
			
		||||
 | 
			
		||||
    if [[ -z "$cache_policy" ]]; then
 | 
			
		||||
        zstyle ":completion:${curcontext}:" cache-policy _invoke_subcommands_caching_policy
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if ( [[ ${+_invoke_subcommands} -eq 0 ]] || _cache_invalid invoke_subcommands ) \
 | 
			
		||||
        && ! _retrieve_cache invoke_subcommands; then
 | 
			
		||||
 | 
			
		||||
        _invoke_subcommands=(${${(f)"$(inv -l | grep "^  [a-zA-Z]" | awk '{print $1}')"}})
 | 
			
		||||
        _store_cache invoke_subcommands _invoke_subcommands
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    local expl
 | 
			
		||||
    _wanted invoke_subcommands expl 'invoke subcommands' compadd -a _invoke_subcommands
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_invoke_subcommands_caching_policy() {
 | 
			
		||||
    local -a oldp
 | 
			
		||||
    oldp=( "$1"(Nmm+3) )    # 3min.
 | 
			
		||||
    (( $#oldp ))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_arguments -s -S \
 | 
			
		||||
  "--no-dedupe[Disable task deduplication.]" \
 | 
			
		||||
  "(-c --collection)"{-c,--collection}"[Specify collection name to load. May be given >1 time.]" \
 | 
			
		||||
  "(-e --echo)"{-e,--echo}"[Echo executed commands before running.]" \
 | 
			
		||||
  "(-h --help)"{-h,--help}"[Show core or per-task help and exit.]:command:_invoke_subcommand" \
 | 
			
		||||
  "(-H --hide)"{-H,--hide}"[Set default value of run()'s 'hide' kwarg.]:command:_invoke_subcommand" \
 | 
			
		||||
  "(-l --list)"{-l,--list}"[List available tasks.]" \
 | 
			
		||||
  "(-p --pty)"{-p,--pty}"[Use a pty when executing shell commands.]" \
 | 
			
		||||
  "(-r --root)"{-r,--root}"[Change root directory used for finding task modules.]:directory:_directories" \
 | 
			
		||||
  "(-V --version)"{-V,--version}"[Show version and exit.]:" \
 | 
			
		||||
  "(-w --warn-only)"{-w,--warn-only}"[Warn, instead of failing, when shell commands fail.]" \
 | 
			
		||||
  "*::invoke commands:_invoke_subcommand"
 | 
			
		||||
		Reference in New Issue
	
	Block a user