diff options
| author | Shohei YOSHIDA <syohex@gmail.com> | 2022-11-16 16:09:14 +0900 |
|---|---|---|
| committer | Shohei YOSHIDA <syohex@gmail.com> | 2022-11-16 16:09:14 +0900 |
| commit | 63a275bc2e292f6e0d7af6d30ffcbc2776245a7e (patch) | |
| tree | 60f6f2c790eb66be01840825b0a06f241fb83045 /src/_thor | |
| parent | Merge pull request #919 from zsh-users/update-grances (diff) | |
| download | zsh-completions-63a275bc2e292f6e0d7af6d30ffcbc2776245a7e.tar zsh-completions-63a275bc2e292f6e0d7af6d30ffcbc2776245a7e.tar.gz zsh-completions-63a275bc2e292f6e0d7af6d30ffcbc2776245a7e.tar.bz2 zsh-completions-63a275bc2e292f6e0d7af6d30ffcbc2776245a7e.tar.lz zsh-completions-63a275bc2e292f6e0d7af6d30ffcbc2776245a7e.tar.xz zsh-completions-63a275bc2e292f6e0d7af6d30ffcbc2776245a7e.tar.zst zsh-completions-63a275bc2e292f6e0d7af6d30ffcbc2776245a7e.zip | |
Update thor completion
Diffstat (limited to 'src/_thor')
| -rw-r--r-- | src/_thor | 94 |
1 files changed, 89 insertions, 5 deletions
@@ -24,21 +24,105 @@ # Description # ----------- # -# Completion script for thor (https://github.com/wycats/thor). -# -# Source: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/thor +# Completion script for thor 1.2.1 (https://github.com/rails/thor). # # ------------------------------------------------------------------------------ # Authors # ------- # # * Andrew Hodges (https://github.com/betawaffle) +# * Shohei Yoshida (https://github.com/syohex) # # ------------------------------------------------------------------------------ +_thor_subcommands() { + local -a commands=( + 'help:Describe available commands or one specific command' + ) + + if [[ -e Thorfile ]]; then + commands=(${(@f)"$(thor list 2>/dev/null | awk '/^thor/{sub(/^thor /,"\\"); sub(/[ ]*#[ ]*/,":");print}')"} $commands) + else + commands=( + $commands + 'install:Install an optionally named Thor file into your system commands' + 'installed:List the installed Thor modules and commands' + 'list:List the available thor commands' + 'uninstall:Uninstall a named Thor module' + 'update:Update a Thor file from its original location' + 'version:Show Thor version' + ) + fi + + _describe -t commands 'command' commands "$@" +} + +_thor_help() { + local -a commands + + if [[ -e Thorfile ]]; then + commands=(${(@f)"$(thor list 2>/dev/null | awk "/^thor/{ printf \"\\\\%s\\n\", \$2 }")"}) + else + commands=(help install installed list uninstall update version) + fi + + _values 'help' $commands +} + +_thor() { + typeset -A opt_args + local context state line + local curcontext="$curcontext" + local ret=1 + + _arguments -C -A "-*" \ + '1: :_thor_subcommands' \ + '*::arg:->args' \ + && ret=0 + + case "$state" in + (args) + case $words[1] in + (help) + _arguments \ + '1: :_thor_help' \ + && ret=0 + ;; + (install) + _arguments \ + '--as=[specify the name]:name' \ + '--relative[use relative path]' \ + '--force[force install]' \ + '*: :_files' \ + && ret=0 + ;; + (installed) + _arguments \ + '--internal[show internal]' \ + && ret=0 + ;; + (list) + _arguments \ + '--substring[use search keyword as substring]' \ + '--group=[specify the group name]' \ + '--all[search from all groups]' \ + '--debug[show all back trace if error raises]' \ + '*::' \ + && ret=0 + ;; + (*) + _arguments \ + '*::_files' \ + && ret=0 + ;; + esac + ;; + esac + + return ret +} -# FIXME This should be rewritten using up-to-date ZSH completion API. -compadd `thor list | grep thor | cut -d " " -f 2` +_thor "$@" # Local Variables: # mode: Shell-Script |
