aboutsummaryrefslogtreecommitdiffstats
path: root/src/_thor
diff options
context:
space:
mode:
authorShohei YOSHIDA <syohex@gmail.com>2022-11-16 16:09:14 +0900
committerShohei YOSHIDA <syohex@gmail.com>2022-11-16 16:09:14 +0900
commit63a275bc2e292f6e0d7af6d30ffcbc2776245a7e (patch)
tree60f6f2c790eb66be01840825b0a06f241fb83045 /src/_thor
parentMerge pull request #919 from zsh-users/update-grances (diff)
downloadzsh-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/_thor94
1 files changed, 89 insertions, 5 deletions
diff --git a/src/_thor b/src/_thor
index 081de1f..aadaef2 100644
--- a/src/_thor
+++ b/src/_thor
@@ -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