commit
						e31fcdcced
					
				|  | @ -0,0 +1,345 @@ | ||||||
|  | #compdef yarn | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | # Redistribution and use in source and binary forms, with or without | ||||||
|  | # modification, are permitted provided that the following conditions are met: | ||||||
|  | #     * Redistributions of source code must retain the above copyright | ||||||
|  | #       notice, this list of conditions and the following disclaimer. | ||||||
|  | #     * Redistributions in binary form must reproduce the above copyright | ||||||
|  | #       notice, this list of conditions and the following disclaimer in the | ||||||
|  | #       documentation and/or other materials provided with the distribution. | ||||||
|  | #     * Neither the name of the zsh-users nor the | ||||||
|  | #       names of its contributors may be used to endorse or promote products | ||||||
|  | #       derived from this software without specific prior written permission. | ||||||
|  | # | ||||||
|  | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||||
|  | # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||||
|  | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||||
|  | # DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY | ||||||
|  | # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||||
|  | # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||||
|  | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||||
|  | # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||||
|  | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||||
|  | # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | # Description | ||||||
|  | # ----------- | ||||||
|  | # | ||||||
|  | #  Completion script for yarn (https://yarnpkg.com/) | ||||||
|  | # | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | # Authors | ||||||
|  | # ------- | ||||||
|  | # | ||||||
|  | #  * Massimiliano Torromeo <massimiliano.torromeo@gmail.com> | ||||||
|  | # | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | _commands=( | ||||||
|  |   'access' | ||||||
|  |   'cache' | ||||||
|  |   "check:Verify package dependencies agains yarn's lock file" | ||||||
|  |   'clean:Cleans and removes unnecessary files from package dependencies' | ||||||
|  |   'config:Manages the yarn configuration files' | ||||||
|  |   'generate-lock-entry:Generates a lock file entry' | ||||||
|  |   'global:Install packages globally on your operating system' | ||||||
|  |   'help:Show information about a command' | ||||||
|  |   'import' | ||||||
|  |   'info:Show information about a package' | ||||||
|  |   'init:Interactively creates or updates a package.json file' | ||||||
|  |   'install:Install all the dependencies listed within package.json' | ||||||
|  |   'licenses:List licenses for installed packages' | ||||||
|  |   'link:Symlink a package folder during development' | ||||||
|  |   'list:List installed packages' | ||||||
|  |   'login:Store registry username and email' | ||||||
|  |   'logout:Clear registry username and email' | ||||||
|  |   'outdated:Checks for outdated package dependencies' | ||||||
|  |   'owner:Manage package owners' | ||||||
|  |   'pack:Creates a compressed gzip archive of package dependencies' | ||||||
|  |   'publish:Publishes a package to the npm registry' | ||||||
|  |   'run:Runs a defined package script' | ||||||
|  |   'tag:Add, remove, or list tags on a package' | ||||||
|  |   'team:Maintain team memberships' | ||||||
|  |   'unlink:Unlink a previously created symlink for a package' | ||||||
|  |   'version:Updates the package version' | ||||||
|  |   'versions' | ||||||
|  |   'why:Show information about why a package is installed' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | _global_commands=( | ||||||
|  |   'add:Installs a package and any packages that it depends on' | ||||||
|  |   'bin:Displays the location of the yarn bin folder' | ||||||
|  |   'remove:Remove installed package from dependencies updating package.json' | ||||||
|  |   'upgrade:Upgrades packages to their latest version based on the specified range' | ||||||
|  |   'upgrade-interactive' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | _yarn_commands_scripts() { | ||||||
|  |   local -a scripts | ||||||
|  |   scripts=($(yarn run --json 2>/dev/null | sed -r '/Commands available|possibleCommands/!d;s/.*Commands available from binary scripts: ([^"]+)".*/\1/;s/.*"items":\[([^]]+).*/\1/;s/[" ]//g;s/,/\n/g')) | ||||||
|  |   _describe 'command or script' _commands -- _global_commands -- scripts | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _yarn_scripts() { | ||||||
|  |   local -a scripts | ||||||
|  |   scripts=($(yarn run --json 2>/dev/null | sed -r '/Commands available|possibleCommands/!d;s/.*Commands available from binary scripts: ([^"]+)".*/\1/;s/.*"items":\[([^]]+).*/\1/;s/[" ]//g;s/,/\n/g')) | ||||||
|  |   _describe 'script' scripts | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _yarn_global_commands() { | ||||||
|  |   local -a cmds | ||||||
|  |   cmds=('ls:List installed packages') | ||||||
|  |   _describe 'command' _global_commands | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _yarn_commands() { | ||||||
|  |   _describe 'command' _commands -- _global_commands | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _yarn() { | ||||||
|  |   local context state state_descr line | ||||||
|  |   typeset -A opt_args | ||||||
|  | 
 | ||||||
|  |   _arguments \ | ||||||
|  |     '(-h --help)'{-h,--help}'[output usage information]' \ | ||||||
|  |     '(-V --version)'{-V,--version}'[output the version number]' \ | ||||||
|  |     '--verbose[output verbose messages on internal operations]' \ | ||||||
|  |     '--offline[trigger an error if any required dependencies are not available in local cache]' \ | ||||||
|  |     '--prefer-offline[use network only if dependencies are not available in local cache]' \ | ||||||
|  |     '--strict-semver' \ | ||||||
|  |     '--json' \ | ||||||
|  |     "--ignore-scripts[don't run lifecycle scripts]" \ | ||||||
|  |     '--har[save HAR output of network traffic]' \ | ||||||
|  |     '--ignore-platform[ignore platform checks]' \ | ||||||
|  |     '--ignore-engines[ignore engines check]' \ | ||||||
|  |     '--ignore-optional[ignore optional dependencies]' \ | ||||||
|  |     '--force[install and build packages even if they were built before, overwrite lockfile]' \ | ||||||
|  |     '--skip-integrity-check[run install without checking if node_modules is installed]' \ | ||||||
|  |     '--check-files[install will verify file tree of packages for consistency]' \ | ||||||
|  |     "--no-bin-links[don't generate bin links when setting up packages]" \ | ||||||
|  |     '--flat[only allow one version of a package]' \ | ||||||
|  |     '(--prod --production)'{--prod,--production} \ | ||||||
|  |     "--no-lockfile[don't read or generate a lockfile]" \ | ||||||
|  |     "--pure-lockfile[don't generate a lockfile]" \ | ||||||
|  |     "--frozen-lockfile[don't generate a lockfile and fail if an update is needed]" \ | ||||||
|  |     '--link-duplicates[create hardlinks to the repeated modules in node_modules]' \ | ||||||
|  |     '--global-folder=[modules folder]:folder:_files -/' \ | ||||||
|  |     '--modules-folder=[rather than installing modules into the node_modules folder relative to the cwd, output them here]:folder:_files -/' \ | ||||||
|  |     '--cache-folder=[specify a custom folder to store the yarn cache]:folder:_files -/' \ | ||||||
|  |     '--mutex=[use a mutex to ensure only one yarn instance is executing]:type[\:specifier]' \ | ||||||
|  |     '--no-emoji[disable emoji in output]' \ | ||||||
|  |     '(-s --silent)'{-s,--silent}'[skip Yarn console logs, other types of logs (script output) will be printed]' \ | ||||||
|  |     '--proxy=:host:_hosts' \ | ||||||
|  |     '--https-proxy=:host:_hosts' \ | ||||||
|  |     '--no-progress[disable progress bar]' \ | ||||||
|  |     '--network-concurrency=[maximum number of concurrent network requests]:number' \ | ||||||
|  |     '--network-timeout=[TCP timeout for network requests]:milliseconds' \ | ||||||
|  |     '--non-interactive[do not show interactive prompts]' \ | ||||||
|  |     '1: :_yarn_commands_scripts' \ | ||||||
|  |     '*:: :->command_args' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   case $state in | ||||||
|  |     command_args) | ||||||
|  |       case $words[1] in | ||||||
|  |         help) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :_yarn_commands' \ | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         access) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :(public restricted grant revoke ls-packages ls-collaborators edit)' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         add) | ||||||
|  |           _arguments \ | ||||||
|  |             '(-D --dev)'{-D,--dev}'[install packages in devDependencies]' \ | ||||||
|  |             '(-P --peer)'{-P,--peer}'[install packages in peerDependencies]' \ | ||||||
|  |             '(-O --optional)'{-O,--optional}'[install packages in optionalDependencies]' \ | ||||||
|  |             '(-E --exact)'{-E,--exact}'[install packages as exact versions]' \ | ||||||
|  |             '(-T --tilde)'{-T,--tilde}'[install the most recent release of the packages that have the same minor version]' \ | ||||||
|  |             '*:package-name:' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         cache) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :(ls dir clean)' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         check) | ||||||
|  |           _arguments \ | ||||||
|  |             '--integrity' \ | ||||||
|  |             '--verify-tree' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         config) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :(set get delete list)' \ | ||||||
|  |             '*:: :->config_args' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         global) | ||||||
|  |           _arguments \ | ||||||
|  |             '--prefix=[bin prefix to use to install binaries]' \ | ||||||
|  |             '1: :_yarn_global_commands' \ | ||||||
|  |             '*:: :->command_args' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         info) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:package:' \ | ||||||
|  |             '2:field' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         init) | ||||||
|  |           _arguments \ | ||||||
|  |             '(-y --yes)'{-y,--yes}'[install packages in devDependencies]' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         licenses) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :(ls generate-disclaimer)' \ | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         link|unlink|outdated) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:package' \ | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         list) | ||||||
|  |           _arguments \ | ||||||
|  |             '--depth[Limit the depth of the shown dependencies]:depth' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         owner) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :(ls add rm)' \ | ||||||
|  |             '*:: :->owner_args' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         pack) | ||||||
|  |           _arguments \ | ||||||
|  |             '(-f --filename)'{-f,--filename}':filename:_files' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         publish) | ||||||
|  |           _arguments \ | ||||||
|  |             '--new-version:version:' \ | ||||||
|  |             '--message:message:' \ | ||||||
|  |             '--no-git-tag-version' \ | ||||||
|  |             '--access:access:' \ | ||||||
|  |             '--tag:tag:' \ | ||||||
|  |             '1: :_files' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         remove|upgrade) | ||||||
|  |           _arguments \ | ||||||
|  |             '*:package:' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         run) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :_yarn_scripts' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         tag) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :(ls add rm)' \ | ||||||
|  |             '*:: :->tag_args' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         team) | ||||||
|  |           _arguments \ | ||||||
|  |             '1: :(create destroy add rm ls)' \ | ||||||
|  |             '*:: :->team_args' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         version) | ||||||
|  |           _arguments \ | ||||||
|  |             '--new-version:version:' \ | ||||||
|  |             '--message:message:' \ | ||||||
|  |             '--no-git-tag-version' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         why) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:query:_files' | ||||||
|  |         ;; | ||||||
|  |       esac | ||||||
|  |     ;; | ||||||
|  |   esac | ||||||
|  | 
 | ||||||
|  |   case $state in | ||||||
|  |     config_args) | ||||||
|  |       case $words[1] in | ||||||
|  |         get|delete) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:key:' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         set) | ||||||
|  |           _arguments \ | ||||||
|  |             '(-g --global)'{-g,--global} \ | ||||||
|  |             '1:key:' \ | ||||||
|  |             '2:value:' | ||||||
|  |         ;; | ||||||
|  |       esac | ||||||
|  |     ;; | ||||||
|  | 
 | ||||||
|  |     owner_args) | ||||||
|  |       case $words[1] in | ||||||
|  |         ls) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:package:' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         add|rm) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:user:' \ | ||||||
|  |             '2:package:' | ||||||
|  |         ;; | ||||||
|  |       esac | ||||||
|  |     ;; | ||||||
|  | 
 | ||||||
|  |     tag_args) | ||||||
|  |       case $words[1] in | ||||||
|  |         ls) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:package' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         add|rm) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:package:' \ | ||||||
|  |             '2:tag:' | ||||||
|  |         ;; | ||||||
|  |       esac | ||||||
|  |     ;; | ||||||
|  | 
 | ||||||
|  |     team_args) | ||||||
|  |       case $words[1] in | ||||||
|  |         create|destroy|ls) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:scope\:team:' | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |         add|rm) | ||||||
|  |           _arguments \ | ||||||
|  |             '1:scope\:team:' \ | ||||||
|  |             '2:user:' | ||||||
|  |         ;; | ||||||
|  |       esac | ||||||
|  |     ;; | ||||||
|  |   esac | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _yarn "$@" | ||||||
|  | 
 | ||||||
|  | # Local Variables: | ||||||
|  | # mode: Shell-Script | ||||||
|  | # sh-indentation: 2 | ||||||
|  | # indent-tabs-mode: nil | ||||||
|  | # sh-basic-offset: 2 | ||||||
|  | # End: | ||||||
|  | # vim: ft=zsh sw=2 ts=2 et | ||||||
		Loading…
	
		Reference in New Issue