summaryrefslogtreecommitdiff
path: root/Completion/Unix
diff options
context:
space:
mode:
authorAurélien Olivier <aurelien@aolivier.eu>2019-03-04 21:49:39 +0100
committerOliver Kiddle <okiddle@yahoo.co.uk>2019-05-06 17:03:59 +0200
commit3908987b4ae831da48732b60fa6843ab33feafbc (patch)
treed20b1fcc1b6ce206ac686c482e1b2fc1a0ebff6b /Completion/Unix
parent191e05b1083d8c8ac8b2858c9278a7bd5414881f (diff)
downloadzsh-3908987b4ae831da48732b60fa6843ab33feafbc.tar.gz
zsh-3908987b4ae831da48732b60fa6843ab33feafbc.zip
github #33: Add completion file for myrepos (mr)
Diffstat (limited to 'Completion/Unix')
-rw-r--r--Completion/Unix/Command/_myrepos126
1 files changed, 126 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_myrepos b/Completion/Unix/Command/_myrepos
new file mode 100644
index 000000000..d26c1245b
--- /dev/null
+++ b/Completion/Unix/Command/_myrepos
@@ -0,0 +1,126 @@
+#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