mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			126 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#compdef mr
 | 
						|
 | 
						|
#
 | 
						|
# A zsh completion script for myrepos (http://myrepos.branchable.com/)
 | 
						|
#
 | 
						|
 | 
						|
# This script does not handle user defined alias nor user defined actions (lib,
 | 
						|
# plugins)
 | 
						|
 | 
						|
 | 
						|
local curcontext="$curcontext" state state_descr line ret=1
 | 
						|
local -a arguments
 | 
						|
typeset -A opt_args
 | 
						|
typeset -g mr_subcommands mr_alias
 | 
						|
 | 
						|
arguments=(
 | 
						|
  '(-d --directory)'{-d,--directory}'[specify the topmost directory that mr should work in]:directory:_files -/'
 | 
						|
  '(-c --config)'{-c,--config}'[use the specified mrconfig file]:mrconfig:_files'
 | 
						|
  '(-f --force)'{-f,--force}'[force mr to act on repositories that would normally be skipped]'
 | 
						|
  '--force-env[force mr to execute even though potentially dangerous env variables]'
 | 
						|
  '(-v --verbose)'{-v,--verbose}'[be verbose]'
 | 
						|
  '(-m --minimal)'{-m,--minimal}'[minimise output]'
 | 
						|
  '(-q --quiet)'{-q,--quiet}"[suppress mr's usual output]"
 | 
						|
  '(-k --insecure)'{-k,--insecure}'[accept untrusted SSL certificates when bootstrapping]'
 | 
						|
  '(-s --stats)'{-s,--stats}'[expand the statistics line displayed at the end]'
 | 
						|
  '(-i --interactive)'{-i,--interactive}'[start a subshell if a repository fails to be processed]'
 | 
						|
  '(-n --no-recurse)'{-n,--no-recurse}'[specify the recursivity depth into repositories]::number'
 | 
						|
  '(-j --jobs)'{-j,--jobs}'[number of jobs run in parallel]::number'
 | 
						|
  '--cache[save the command result to ~/.mrcache/]'
 | 
						|
  '--cached[process cached commands]'
 | 
						|
  '--uncache[remove the cached output]'
 | 
						|
  '--top[cd to the top of the repo before running any commands]'
 | 
						|
  '(-t --trust-all)'{-t,--trust-all}'[trust all mrconfig files]'
 | 
						|
  \!{-p,--path} # this obsolete flag is ignored
 | 
						|
  ':mr commands:->subcommand'
 | 
						|
  '*::: := ->option-or-argument'
 | 
						|
)
 | 
						|
 | 
						|
_arguments -C $arguments && ret=0
 | 
						|
 | 
						|
case $state in
 | 
						|
  (subcommand)
 | 
						|
 | 
						|
    mr_subcommands=(
 | 
						|
      "checkout:check out any repositories that are not already checked out"
 | 
						|
      "update:update each repository"
 | 
						|
      "status:display a status report for each repository"
 | 
						|
      "clean:print/remove ignored or untracked files and other cruft"
 | 
						|
      "commit:commit changes to each repository"
 | 
						|
      "record:record changes to the local repository"
 | 
						|
      "fetch:fetch from each repository's remote repository"
 | 
						|
      "push:push committed local changes to remote repository"
 | 
						|
      "diff:show a diff of uncommitted changes"
 | 
						|
      "log:show the commit log"
 | 
						|
      "grep:search for a pattern in each repository"
 | 
						|
      "run:run the specified command in each repository"
 | 
						|
      "bootstrap:use a 'source' as .mrconfig file"
 | 
						|
      "list:list the repositories that mr will act on"
 | 
						|
      "register:register an existing repository in a mrconfig file"
 | 
						|
      "config:get and set value from a mrconfig file"
 | 
						|
      "offline:advise mr that it is in offline mode"
 | 
						|
      "online:advise mr that it is in online mode"
 | 
						|
      "remember:remember a command to be run later"
 | 
						|
      "help:display this help."
 | 
						|
    )
 | 
						|
 | 
						|
    mr_alias=(
 | 
						|
      "co:check out any repositories that are not already checked out"
 | 
						|
      "ci:commit changes to each repository"
 | 
						|
      "ls:list the repositories that mr will act on"
 | 
						|
    )
 | 
						|
 | 
						|
    _describe -t commands 'command' mr_subcommands -- mr_alias && ret=0
 | 
						|
 | 
						|
  ;;
 | 
						|
  (option-or-argument)
 | 
						|
    curcontext=${curcontext%:*}-$line[1]:
 | 
						|
    case $line[1] in
 | 
						|
      (clean)
 | 
						|
        _arguments \
 | 
						|
          '-f[allow removing the files]' \
 | 
						|
          '*: :' && ret=0
 | 
						|
      ;;
 | 
						|
      (commit|ci|record)
 | 
						|
        _arguments \
 | 
						|
          '-m[allow specifying a commit message]' \
 | 
						|
          '*: :' && ret=0
 | 
						|
      ;;
 | 
						|
      (grep)
 | 
						|
        _message 'search pattern'
 | 
						|
      ;;
 | 
						|
      (run)
 | 
						|
        _message 'command to run'
 | 
						|
      ;;
 | 
						|
      (bootstrap)
 | 
						|
        if [[ $CURRENT -eq 2 ]]; then
 | 
						|
          _alternative \
 | 
						|
            'urls:URL:_urls' \
 | 
						|
            'local:local file or stdin:_files'
 | 
						|
        elif [[ $CURRENT -eq 3 ]]; then
 | 
						|
          _directories
 | 
						|
        fi
 | 
						|
      ;;
 | 
						|
      (register)
 | 
						|
        _directories
 | 
						|
      ;;
 | 
						|
      (config)
 | 
						|
        case $CURRENT in
 | 
						|
          (2) _message -e section 'section name';&
 | 
						|
          (3) _message -e setting '"setting" or "setting=value"';&
 | 
						|
        esac
 | 
						|
      ;;
 | 
						|
      (remember)
 | 
						|
        _describe -t commands 'command' mr_subcommands -- mr_alias && ret=0
 | 
						|
      ;;
 | 
						|
      (checkout|co|update|status|fetch|push|diff|log|list|ls|offline|online|help)
 | 
						|
        _message 'no arguments'
 | 
						|
      ;;
 | 
						|
      (*)
 | 
						|
        _default && ret=0
 | 
						|
      ;;
 | 
						|
    esac
 | 
						|
  ;;
 | 
						|
esac
 | 
						|
 | 
						|
return ret
 |