From 08d086a09c0181b733a9f5565fc242ca148fd80a Mon Sep 17 00:00:00 2001 From: Patrick Fitzgerald Date: Fri, 17 Dec 2021 15:47:56 -0800 Subject: [PATCH] feat(volta): add volta plugin (#10441) For Volta JavaScript toolchain https://github.com/volta-cli/volta --- plugins/volta/README.md | 11 ++ plugins/volta/_volta | 298 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 309 insertions(+) create mode 100644 plugins/volta/README.md create mode 100644 plugins/volta/_volta diff --git a/plugins/volta/README.md b/plugins/volta/README.md new file mode 100644 index 000000000..d5972d56c --- /dev/null +++ b/plugins/volta/README.md @@ -0,0 +1,11 @@ +# Volta + +This plugin provides completion for [Volta](https://volta.sh/). + +To use it add volta to the plugins array in your zshrc file. + +```bash +plugins=(... volta) +``` + +This plugin installs no aliases. diff --git a/plugins/volta/_volta b/plugins/volta/_volta new file mode 100644 index 000000000..295b80362 --- /dev/null +++ b/plugins/volta/_volta @@ -0,0 +1,298 @@ +#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 :_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