plugins/nvm: Fix docs, clean up code, and add license

Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
This commit is contained in:
Andrea Ghensi
2022-12-04 22:21:28 +01:00
committed by Koichi Murase
parent fadaaa1263
commit 16da2bdc54
2 changed files with 56 additions and 25 deletions

View File

@@ -38,12 +38,12 @@ completions=(
## `.nvmrc` autoload ## `.nvmrc` autoload
If set, the plugin will automatically load a node version when if finds a If set, the plugin will automatically load a node version when it finds a
`.nvmrc` file[3] in the current working directory indicating which node version to load. `.nvmrc` file[3] in the current working directory indicating which node version to load.
This can be done adding the following to your `.bashrc`: This can be done by adding the following to your `.bashrc`:
```bash ```bash
export OMB_PLUGIN_NVM_AUTO_USE=true OMB_PLUGIN_NVM_AUTO_USE=true
``` ```
[1]: https://github.com/nvm-sh/nvm [1]: https://github.com/nvm-sh/nvm

View File

@@ -10,59 +10,90 @@
# Try to load nvm only if command not already available # Try to load nvm only if command not already available
if ! _omb_util_command_exists nvm; then if ! _omb_util_command_exists nvm; then
# shellcheck source=/dev/null # shellcheck source=/dev/null
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" [[ -s $NVM_DIR/nvm.sh ]] && source "$NVM_DIR/nvm.sh"
fi fi
#------------------------------------------------------------------------------
# Optional .nvmrc autoload # Optional .nvmrc autoload
if _omb_util_command_exists nvm && [[ ${OMB_PLUGIN_NVM_AUTO_USE} == true ]]; then #
find-up () { # This part is originally from the official nvm documentation
path=$(pwd) # (README.md). Here is the license of the original project:
while [[ "$path" != "" && ! -e "$path/$1" ]]; do #
path=${path%/*} # The MIT License (MIT)
#
# Copyright (c) 2010 Tim Caswell
# Copyright (c) 2014 Jordan Harband
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
if _omb_util_command_exists nvm && [[ ${OMB_PLUGIN_NVM_AUTO_USE-} == true ]]; then
_omb_plugin_nvm_find_up() {
local path=$PWD
while [[ $path && ! -e $path/$1 ]]; do
path=${path%/*}
done done
echo "$path" echo "$path"
} }
cdnvm(){ _omb_plugin_nvm_cd(){
cd "$@" || return $? cd "$@" || return "$?"
nvm_path=$(find-up .nvmrc | tr -d '\n') local nvm_path=$(_omb_plugin_nvm_find_up .nvmrc)
# If there are no .nvmrc file, use the default nvm version # If there are no .nvmrc file, use the default nvm version
if [[ ! $nvm_path = *[^[:space:]]* ]]; then if [[ $nvm_path != *[^[:space:]]* ]]; then
declare default_version; local default_version
default_version=$(nvm version default); default_version=$(nvm version default)
# If there is no default version, set it to `node` # If there is no default version, set it to `node`
# This will use the latest version on your machine # This will use the latest version on your machine
if [[ $default_version == "N/A" ]]; then if [[ $default_version == "N/A" ]]; then
nvm alias default node; nvm alias default node
default_version=$(nvm version default); default_version=$(nvm version default)
fi fi
# If the current version is not the default version, set it to use the default version # If the current version is not the default version, set it to use the default version
if [[ $(nvm current) != "$default_version" ]]; then if [[ $(nvm current) != "$default_version" ]]; then
nvm use default; nvm use default
fi fi
elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then
declare nvm_version local nvm_version
nvm_version=$(<"$nvm_path"/.nvmrc) nvm_version=$(< "$nvm_path"/.nvmrc)
# Add the `v` suffix if it does not exists in the .nvmrc file # Add the `v` suffix if it does not exists in the .nvmrc file
if [[ $nvm_version != v* ]]; then if [[ $nvm_version != v* ]]; then
nvm_version="v""$nvm_version" nvm_version=v$nvm_version
fi fi
# If it is not already installed, install it # If it is not already installed, install it
if [[ $(nvm ls "$nvm_version" | tr -d '[:space:]') == "N/A" ]]; then if nvm ls "$nvm_version" | grep -qx '[[:space:]]*N/A[[:space:]]*'; then
nvm install "$nvm_version"; nvm install "$nvm_version"
fi fi
if [[ $(nvm current) != "$nvm_version" ]]; then if [[ $(nvm current) != "$nvm_version" ]]; then
nvm use "$nvm_version"; nvm use "$nvm_version"
fi fi
fi fi
} }
alias cd='cdnvm' alias cd='_omb_plugin_nvm_cd'
fi fi
#------------------------------------------------------------------------------