Merge pull request #911 from zsh-users/update-nvm
Update nvm completion
This commit is contained in:
commit
08cff30f4d
223
src/_nvm
223
src/_nvm
|
@ -1,6 +1,6 @@
|
|||
#compdef nvm
|
||||
# ------------------------------------------------------------------------------
|
||||
# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users
|
||||
# Copyright (c) 2011 Github zsh-users - https://github.com/zsh-users
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
|
@ -28,78 +28,203 @@
|
|||
# Description
|
||||
# -----------
|
||||
#
|
||||
# Completion script for nvm (https://github.com/creationix/nvm).
|
||||
# Completion script for nvm v0.39.2 (https://github.com/nvm-sh/nvm).
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
# Authors
|
||||
# -------
|
||||
#
|
||||
# * Changwoo Park (https://github.com/pismute)
|
||||
# * Shohei Yoshida (https://github.com/syohex)
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
local curcontext="$curcontext" state line ret=1
|
||||
__nvm() {
|
||||
typeset -A opt_args
|
||||
local context state line
|
||||
|
||||
local -a _1st_arguments
|
||||
_1st_arguments=(
|
||||
'help:Show this message'
|
||||
'install:Download and install a <version>'
|
||||
'uninstall:Uninstall a <version>'
|
||||
'use:Modify PATH to use <version>'
|
||||
'run:Run <version> with <args> as arguments'
|
||||
'ls:List installed [versions]'
|
||||
'ls-remote:List remote versions available for install'
|
||||
'deactivate:Undo effects of NVM on current shell'
|
||||
'alias:Set an alias named <name> pointing to <version>. Show all aliases beginning with [<pattern>].'
|
||||
'unalias:Deletes the alias named <name>'
|
||||
'copy-packages:Install global NPM packages contained in <version> to current version'
|
||||
'clear-cache:Clear cache'
|
||||
'version:Show current node version'
|
||||
)
|
||||
local curcontext="$curcontext"
|
||||
local ret=1
|
||||
|
||||
_arguments -C \
|
||||
'1: :->cmds' \
|
||||
'*: :->args' && ret=0
|
||||
|
||||
__nvm_aliases(){
|
||||
local aliases
|
||||
aliases=""
|
||||
if [ -d $NVM_DIR/alias ]; then
|
||||
aliases="`cd $NVM_DIR/alias && ls`"
|
||||
fi
|
||||
echo "${aliases}"
|
||||
}
|
||||
|
||||
__nvm_versions(){
|
||||
echo "$(nvm_ls) $(__nvm_aliases)"
|
||||
}
|
||||
|
||||
case $state in
|
||||
cmds)
|
||||
_describe -t commands 'nvm command' _1st_arguments && ret=0
|
||||
;;
|
||||
'--help[show help message]' \
|
||||
'--no-color[suppress colored output]' \
|
||||
'--version[print out the installed version of nvm]' \
|
||||
'1: :__nvm_subcommands' \
|
||||
'*::arg:->args' && ret=0
|
||||
|
||||
case "$state" in
|
||||
args)
|
||||
case $words[2] in
|
||||
(use|run|ls|list|install|uninstall|copy-packages)
|
||||
|
||||
_values 'version' $(__nvm_versions) && ret=0
|
||||
case $words[1] in
|
||||
(install)
|
||||
_arguments -C \
|
||||
'-s[Skip binary download, install from source only]' \
|
||||
'-b[Skip source download, install from binary only]' \
|
||||
'--reinstall-packages-from=[When installing, reinstall packages installed in node]:version' \
|
||||
'--lts=[When installing, only select from LTS versions]::lts_name' \
|
||||
'--skip-default-packages[When installing, skip the default-packages file if it exists]' \
|
||||
'--latest-npm[After installing, attempt to upgrade to the latest working npm on the given node version]' \
|
||||
'--no-progress[Disable the progress bar on any downloads]' \
|
||||
'--alias=[After installing, set the alias specified to the version specified]' \
|
||||
'--default[After installing, set default alias to the version specified]' \
|
||||
'1::version:__nvm_versions' \
|
||||
&& ret=0
|
||||
;;
|
||||
|
||||
(alias|unalias)
|
||||
|
||||
_values 'aliases' $(__nvm_aliases) && ret=0
|
||||
(uninstall)
|
||||
_arguments -C \
|
||||
'--lts=[When installing, only select from LTS versions]::lts_name' \
|
||||
'1: :__nvm_installed_versions' \
|
||||
&& ret=0
|
||||
;;
|
||||
(use)
|
||||
_arguments -C \
|
||||
'--silent[Silences stdout/stderr output]' \
|
||||
'--lts=[When installing, only select from LTS versions]::lts_name' \
|
||||
'1: :__nvm_installed_versions' \
|
||||
'*: :_normal' \
|
||||
&& ret=0
|
||||
;;
|
||||
(exec)
|
||||
_arguments -C \
|
||||
'--silent[Silences stdout/stderr output]' \
|
||||
'--lts=[When installing, only select from LTS versions]::lts_name' \
|
||||
'1: :__nvm_installed_versions' \
|
||||
'*: :_normal' \
|
||||
&& ret=0
|
||||
;;
|
||||
(run)
|
||||
_arguments -C \
|
||||
'--silent[Silences stdout/stderr output]' \
|
||||
'--lts=[When installing, only select from LTS versions]::lts_name' \
|
||||
'1: :__nvm_installed_versions' \
|
||||
'*: :_normal' \
|
||||
&& ret=0
|
||||
;;
|
||||
(ls)
|
||||
_arguments -C \
|
||||
'--no-colors[Suppress colored output]' \
|
||||
'--no-alias[Suppress `nvm alias` output]' \
|
||||
&& ret=0
|
||||
;;
|
||||
(ls-remote)
|
||||
_arguments -C \
|
||||
'--silent[Silences stdout/stderr output]' \
|
||||
'--lts=[When installing, only select from LTS versions]::lts_name' \
|
||||
'--no-colors[Suppress colored output]' \
|
||||
&& ret=0
|
||||
;;
|
||||
(version-remote)
|
||||
_arguments -C \
|
||||
'--lts=[When installing, only select from LTS versions]::lts_name' \
|
||||
'1: :__nvm_versions' \
|
||||
&& ret=0
|
||||
;;
|
||||
(deactivate)
|
||||
_arguments -C \
|
||||
'--silent=[Silences stdout/stderr output]' \
|
||||
&& ret=0
|
||||
;;
|
||||
(alias)
|
||||
_arguments -C \
|
||||
'1:name' \
|
||||
'2:version:__nvm_installed_versions' \
|
||||
&& ret=0
|
||||
;;
|
||||
(unalias)
|
||||
_arguments -C \
|
||||
'1:version:__nvm_installed_versions' \
|
||||
&& ret=0
|
||||
;;
|
||||
(reinstall-package)
|
||||
_arguments -C \
|
||||
'--silent=[Silences stdout/stderr output]' \
|
||||
'1: :__nvm_installed_versions' \
|
||||
&& ret=0
|
||||
;;
|
||||
(which)
|
||||
_arguments -C \
|
||||
'1: : _alternative "version:version:__nvm_installed_versions" "current: :(current)"' \
|
||||
&& ret=0
|
||||
;;
|
||||
(cache)
|
||||
_arguments -C \
|
||||
'1: :__nvm_cache_subcommands' \
|
||||
&& ret=0
|
||||
;;
|
||||
|
||||
*)
|
||||
(( ret )) && _message 'no more arguments'
|
||||
;;
|
||||
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
__nvm_subcommands() {
|
||||
local -a commands=(
|
||||
'help:Show this message'
|
||||
'install:Download and install a <version>'
|
||||
'uninstall:Uninstall a <version>'
|
||||
'use:Modify PATH to use <version>'
|
||||
'exec: Run <command> on <version>'
|
||||
'run:Run <version> with <args> as arguments'
|
||||
'current:Display currently activated version of Node'
|
||||
'ls:List installed [versions]'
|
||||
'ls-remote:List remote versions available for install'
|
||||
'version:Show current node version'
|
||||
'version-remote:Resolve the given description to a single remote version'
|
||||
'deactivate:Undo effects of NVM on current shell'
|
||||
'alias:Set an alias named <name> pointing to <version>. Show all aliases beginning with [<pattern>].'
|
||||
'unalias:Deletes the alias named <name>'
|
||||
'install-latest-npm:Attempt to upgrade to the latest working npm on the current node version'
|
||||
'reinstall-packages:Reinstall global npm packages contained in <version> to current version'
|
||||
'unload:Unload `nvm` from shell'
|
||||
'which:Display path to installed node version'
|
||||
'cache:Show cache directory/Clear cache'
|
||||
'set-colors:Set five text colors using format "yMeBg"'
|
||||
)
|
||||
|
||||
_describe -t commands 'command' commands "$@"
|
||||
}
|
||||
|
||||
__nvm_aliases() {
|
||||
local aliases
|
||||
if [[ -d $NVM_DIR/alias ]]; then
|
||||
aliases=$(echo $NVM_DIR/alias/*(:t))
|
||||
fi
|
||||
echo "$aliases"
|
||||
}
|
||||
|
||||
__nvm_versions() {
|
||||
# nvm ls-remote is slow
|
||||
if [[ ${#__nvm_node_version_cache[@]} == 0 ]]; then
|
||||
__nvm_node_version_cache=(${(@f)"$(nvm ls-remote --no-colors | awk '{print $1}')"})
|
||||
fi
|
||||
|
||||
_describe -t versions 'version' __nvm_node_version_cache "$@"
|
||||
}
|
||||
|
||||
__nvm_installed_versions() {
|
||||
local -a versions
|
||||
|
||||
if (( $+functions[nvm_ls] )); then
|
||||
versions=(${(f)"$(nvm_ls)"})
|
||||
fi
|
||||
|
||||
versions=($versions $(__nvm_aliases))
|
||||
_describe -t versions 'version' versions "$@"
|
||||
}
|
||||
|
||||
__nvm_cache_subcommands() {
|
||||
local -a commands=(
|
||||
'dir:Display path to the cache directory for nvm'
|
||||
'clear:Empty cache directory for nvm'
|
||||
)
|
||||
_describe -t commands 'command' commands "$@"
|
||||
}
|
||||
|
||||
__nvm "$@"
|
||||
|
||||
# Local Variables:
|
||||
# mode: Shell-Script
|
||||
|
|
Loading…
Reference in New Issue