diff options
| author | Carlo Sala <carlosalag@protonmail.com> | 2021-12-28 15:55:47 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-28 15:55:47 +0100 | 
| commit | df4508ad543236f754b3cd373d474b4af3638115 (patch) | |
| tree | 9d4e12fba44cf0dc6ce1019a3f08336c4e9d6c05 /plugins/volta | |
| parent | 543d6c0db197b624f8cf8be296fa2e5d37d3e6c2 (diff) | |
| download | zsh-df4508ad543236f754b3cd373d474b4af3638115.tar.gz zsh-df4508ad543236f754b3cd373d474b4af3638115.tar.bz2 zsh-df4508ad543236f754b3cd373d474b4af3638115.zip | |
feat(volta): add dynamic completion generation (#10515)
Diffstat (limited to 'plugins/volta')
| -rw-r--r-- | plugins/volta/_volta | 298 | ||||
| -rw-r--r-- | plugins/volta/volta.plugin.zsh | 19 | 
2 files changed, 19 insertions, 298 deletions
| diff --git a/plugins/volta/_volta b/plugins/volta/_volta deleted file mode 100644 index 295b80362..000000000 --- a/plugins/volta/_volta +++ /dev/null @@ -1,298 +0,0 @@ -#compdef volta - -autoload -U is-at-least - -_volta() { -    typeset -A opt_args -    typeset -a _arguments_options -    local ret=1 - -    if is-at-least 5.2; then -        _arguments_options=(-s -S -C) -    else -        _arguments_options=(-s -C) -    fi - -    local context curcontext="$curcontext" state line -    _arguments "${_arguments_options[@]}" \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -'-v[Prints the current version of Volta]' \ -'--version[Prints the current version of Volta]' \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -":: :_volta_commands" \ -"*::: :->Volta" \ -&& ret=0 -    case $state in -    (Volta) -        words=($line[1] "${words[@]}") -        (( CURRENT += 1 )) -        curcontext="${curcontext%:*:*}:volta-command-$line[1]:" -        case $line[1] in -            (fetch) -_arguments "${_arguments_options[@]}" \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -':tool[@version] -- Tools to fetch, like `node`, `yarn@latest` or `your-package@^14.4.3`.:_files' \ -&& ret=0 -;; -(install) -_arguments "${_arguments_options[@]}" \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -':tool[@version] -- Tools to install, like `node`, `yarn@latest` or `your-package@^14.4.3`.:_files' \ -&& ret=0 -;; -(uninstall) -_arguments "${_arguments_options[@]}" \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -':tool -- The tool to uninstall, e.g. `node`, `npm`, `yarn`, or <package>:_files' \ -&& ret=0 -;; -(pin) -_arguments "${_arguments_options[@]}" \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -':tool[@version] -- Tools to pin, like `node@lts` or `yarn@^1.14`.:_files' \ -&& ret=0 -;; -(ls) -_arguments "${_arguments_options[@]}" \ -'--format=[Specify the output format]: :(human plain)' \ -'(-d --default)-c[Show the currently-active tool(s)]' \ -'(-d --default)--current[Show the currently-active tool(s)]' \ -'(-c --current)-d[Show your default tool(s).]' \ -'(-c --current)--default[Show your default tool(s).]' \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -'::tool -- The tool to lookup - `all`, `node`, `yarn`, or the name of a package or binary.:_files' \ -&& ret=0 -;; -(list) -_arguments "${_arguments_options[@]}" \ -'--format=[Specify the output format]: :(human plain)' \ -'(-d --default)-c[Show the currently-active tool(s)]' \ -'(-d --default)--current[Show the currently-active tool(s)]' \ -'(-c --current)-d[Show your default tool(s).]' \ -'(-c --current)--default[Show your default tool(s).]' \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -'::tool -- The tool to lookup - `all`, `node`, `yarn`, or the name of a package or binary.:_files' \ -&& ret=0 -;; -(completions) -_arguments "${_arguments_options[@]}" \ -'-o+[File to write generated completions to]' \ -'--output=[File to write generated completions to]' \ -'-f[Write over an existing file, if any.]' \ -'--force[Write over an existing file, if any.]' \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -':shell -- Shell to generate completions for:(zsh bash fish powershell elvish)' \ -&& ret=0 -;; -(which) -_arguments "${_arguments_options[@]}" \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -':binary -- The binary to find, e.g. `node` or `npm`:_files' \ -&& ret=0 -;; -(use) -_arguments "${_arguments_options[@]}" \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -'::anything:_files' \ -&& ret=0 -;; -(setup) -_arguments "${_arguments_options[@]}" \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -&& ret=0 -;; -(run) -_arguments "${_arguments_options[@]}" \ -'--node=[Set the custom Node version]' \ -'(--bundled-npm)--npm=[Set the custom npm version]' \ -'(--no-yarn)--yarn=[Set the custom Yarn version]' \ -'*--env=[Set an environment variable (can be used multiple times)]' \ -'(--npm)--bundled-npm[Forces npm to be the version bundled with Node]' \ -'(--yarn)--no-yarn[Disables Yarn]' \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -':command -- The command to run:_files' \ -'::args -- Arguments to pass to the command:_files' \ -&& ret=0 -;; -(help) -_arguments "${_arguments_options[@]}" \ -'-h[Prints help information]' \ -'--help[Prints help information]' \ -'-V[Prints version information]' \ -'--version[Prints version information]' \ -'--verbose[Enables verbose diagnostics]' \ -'(--verbose)--quiet[Prevents unnecessary output]' \ -&& ret=0 -;; -        esac -    ;; -esac -} - -(( $+functions[_volta_commands] )) || -_volta_commands() { -    local commands; commands=( -        "fetch:Fetches a tool to the local machine" \ -"install:Installs a tool in your toolchain" \ -"uninstall:Uninstalls a tool from your toolchain" \ -"pin:Pins your project's runtime or package manager" \ -"list:Displays the current toolchain" \ -"completions:Generates Volta completions" \ -"which:Locates the actual binary that will be called by Volta" \ -"use:" \ -"setup:Enables Volta for the current user / shell" \ -"run:Run a command with custom Node, npm, and/or Yarn versions" \ -"help:Prints this message or the help of the given subcommand(s)" \ -    ) -    _describe -t commands 'volta commands' commands "$@" -} -(( $+functions[_volta__completions_commands] )) || -_volta__completions_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta completions commands' commands "$@" -} -(( $+functions[_volta__fetch_commands] )) || -_volta__fetch_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta fetch commands' commands "$@" -} -(( $+functions[_volta__help_commands] )) || -_volta__help_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta help commands' commands "$@" -} -(( $+functions[_volta__install_commands] )) || -_volta__install_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta install commands' commands "$@" -} -(( $+functions[_volta__list_commands] )) || -_volta__list_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta list commands' commands "$@" -} -(( $+functions[_ls_commands] )) || -_ls_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'ls commands' commands "$@" -} -(( $+functions[_volta__ls_commands] )) || -_volta__ls_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta ls commands' commands "$@" -} -(( $+functions[_volta__pin_commands] )) || -_volta__pin_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta pin commands' commands "$@" -} -(( $+functions[_volta__run_commands] )) || -_volta__run_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta run commands' commands "$@" -} -(( $+functions[_volta__setup_commands] )) || -_volta__setup_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta setup commands' commands "$@" -} -(( $+functions[_volta__uninstall_commands] )) || -_volta__uninstall_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta uninstall commands' commands "$@" -} -(( $+functions[_volta__use_commands] )) || -_volta__use_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta use commands' commands "$@" -} -(( $+functions[_volta__which_commands] )) || -_volta__which_commands() { -    local commands; commands=( -         -    ) -    _describe -t commands 'volta which commands' commands "$@" -} - -_volta "$@"
\ No newline at end of file diff --git a/plugins/volta/volta.plugin.zsh b/plugins/volta/volta.plugin.zsh new file mode 100644 index 000000000..756dc84b3 --- /dev/null +++ b/plugins/volta/volta.plugin.zsh @@ -0,0 +1,19 @@ +# COMPLETION FUNCTION +if (( ! $+commands[volta] )); then +  return +fi + +# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh +# Add completions folder in $ZSH_CACHE_DIR +command mkdir -p "$ZSH_CACHE_DIR/completions" +(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath) + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `deno`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_volta" ]]; then +  declare -A _comps +  autoload -Uz _volta +  _comps[volta]=_volta +fi + +volta completions zsh >| "$ZSH_CACHE_DIR/completions/_volta" &| | 
