From 72f326ac7865927708d63c7043a54e53d2988147 Mon Sep 17 00:00:00 2001 From: cornfeedhobo Date: Fri, 25 Sep 2020 18:09:02 -0500 Subject: [PATCH] clean up nodenv and node plugins --- completion/available/nodenv.completion.bash | 6 ++++ plugins/available/node.plugin.bash | 20 +++++++----- plugins/available/nodenv.plugin.bash | 23 +++++++++++-- test/lib/helpers.bats | 36 ++++++++++----------- 4 files changed, 56 insertions(+), 29 deletions(-) create mode 100644 completion/available/nodenv.completion.bash diff --git a/completion/available/nodenv.completion.bash b/completion/available/nodenv.completion.bash new file mode 100644 index 00000000..d3634de7 --- /dev/null +++ b/completion/available/nodenv.completion.bash @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Bash completion support for nodenv + +if _command_exists nodenv && [[ -r "$(dirname $(readlink -f $(which nodenv)))/../completions/nodenv.bash" ]] ; then + source "$(dirname $(readlink -f $(which nodenv)))/../completions/nodenv.bash" +fi diff --git a/plugins/available/node.plugin.bash b/plugins/available/node.plugin.bash index 65df3da3..a3365631 100644 --- a/plugins/available/node.plugin.bash +++ b/plugins/available/node.plugin.bash @@ -1,13 +1,17 @@ cite about-plugin about-plugin 'Node.js helper functions' -# Ensure local modules are preferred in PATH -pathmunge "./node_modules/.bin" "after" +# Load after nodenv +# BASH_IT_LOAD_PRIORITY: 285 -# Check that we have npm -out=$(command -v npm 2>&1) || return +# Check node version to ensure nodenv can find node +{ _command_exists node && node --version &>/dev/null ; } || return 0 -# If not using nodenv, ensure global modules are in PATH -if [[ ! $out == *"nodenv/shims"* ]] ; then - pathmunge "$(npm config get prefix)/bin" "after" -fi +# Check npm version to ensure nodenv can find npm +{ _command_exists npm && npm --version &>/dev/null ; } || return 0 + +# Ensure global modules are in PATH +pathmunge "$(npm config get prefix)/bin" + +# Ensure local modules are in PATH +pathmunge './node_modules/.bin' diff --git a/plugins/available/nodenv.plugin.bash b/plugins/available/nodenv.plugin.bash index 1bbe7fbd..d4e3c1bd 100644 --- a/plugins/available/nodenv.plugin.bash +++ b/plugins/available/nodenv.plugin.bash @@ -1,7 +1,24 @@ cite about-plugin about-plugin 'load nodenv, if you are using it' -export NODENV_ROOT="$HOME/.nodenv" -pathmunge "$NODENV_ROOT/bin" +# Load after basher +# BASH_IT_LOAD_PRIORITY: 275 -[[ `which nodenv` ]] && eval "$(nodenv init - bash)" +# Don't modify the environment if we can't find the tool: +# - Check if in $PATH already +# - Check if installed manually to $NODENV_ROOT +# - Check if installed manually to $HOME +_command_exists nodenv || + [[ -n "$NODENV_ROOT" && -x "$RBENV_ROOT/bin/nodenv" ]] || + [[ -x "$HOME/.nodenv/bin/nodenv" ]] || + return 0 + +# Set NODENV_ROOT, if not already set +export NODENV_ROOT="${NODENV_ROOT:-$(nodenv root)}" + +# Add NODENV_ROOT/bin to PATH, if that's where it's installed +if ! _command_exists nodenv && [[ -x "$NODENV_ROOT/bin/nodenv" ]] ; then + pathmunge "$NODENV_ROOT/bin" +fi + +eval "$(nodenv init - bash)" diff --git a/test/lib/helpers.bats b/test/lib/helpers.bats index 70481b32..83a7796f 100644 --- a/test/lib/helpers.bats +++ b/test/lib/helpers.bats @@ -134,21 +134,21 @@ function local_setup { @test "helpers: enable the node plugin" { run _enable-plugin "node" - assert_line -n 0 'node enabled with priority 250.' - assert_link_exist "$BASH_IT/enabled/250---node.plugin.bash" "../plugins/available/node.plugin.bash" + assert_line -n 0 'node enabled with priority 285.' + assert_link_exist "$BASH_IT/enabled/285---node.plugin.bash" "../plugins/available/node.plugin.bash" } @test "helpers: enable the node plugin through the bash-it function" { run bash-it enable plugin "node" - assert_line -n 0 'node enabled with priority 250.' - assert_link_exist "$BASH_IT/enabled/250---node.plugin.bash" + assert_line -n 0 'node enabled with priority 285.' + assert_link_exist "$BASH_IT/enabled/285---node.plugin.bash" } @test "helpers: enable the node and nvm plugins through the bash-it function" { run bash-it enable plugin "node" "nvm" - assert_line -n 0 'node enabled with priority 250.' + assert_line -n 0 'node enabled with priority 285.' assert_line -n 1 'nvm enabled with priority 225.' - assert_link_exist "$BASH_IT/enabled/250---node.plugin.bash" + assert_link_exist "$BASH_IT/enabled/285---node.plugin.bash" assert_link_exist "$BASH_IT/enabled/225---nvm.plugin.bash" } @@ -299,7 +299,7 @@ function local_setup { assert_line -n 2 'todo.txt-cli enabled with priority 150.' assert_link_exist "$BASH_IT/enabled/225---nvm.plugin.bash" - assert_link_exist "$BASH_IT/enabled/250---node.plugin.bash" + assert_link_exist "$BASH_IT/enabled/285---node.plugin.bash" assert_link_exist "$BASH_IT/enabled/250---ssh.plugin.bash" assert_link_exist "$BASH_IT/enabled/150---todo.txt-cli.aliases.bash" assert [ ! -L "$BASH_IT/plugins/enabled/node.plugin.bash" ] @@ -311,8 +311,8 @@ function local_setup { ln -s $BASH_IT/plugins/available/nvm.plugin.bash $BASH_IT/plugins/enabled/225---nvm.plugin.bash assert_link_exist "$BASH_IT/plugins/enabled/225---nvm.plugin.bash" - ln -s $BASH_IT/plugins/available/node.plugin.bash $BASH_IT/plugins/enabled/250---node.plugin.bash - assert_link_exist "$BASH_IT/plugins/enabled/250---node.plugin.bash" + ln -s $BASH_IT/plugins/available/node.plugin.bash $BASH_IT/plugins/enabled/285---node.plugin.bash + assert_link_exist "$BASH_IT/plugins/enabled/285---node.plugin.bash" ln -s $BASH_IT/aliases/available/todo.txt-cli.aliases.bash $BASH_IT/aliases/enabled/250---todo.txt-cli.aliases.bash assert_link_exist "$BASH_IT/aliases/enabled/250---todo.txt-cli.aliases.bash" @@ -322,10 +322,10 @@ function local_setup { run _bash-it-migrate assert_link_exist "$BASH_IT/enabled/225---nvm.plugin.bash" - assert_link_exist "$BASH_IT/enabled/250---node.plugin.bash" + assert_link_exist "$BASH_IT/enabled/285---node.plugin.bash" assert_link_exist "$BASH_IT/enabled/250---ssh.plugin.bash" assert_link_exist "$BASH_IT/enabled/150---todo.txt-cli.aliases.bash" - assert [ ! -L "$BASH_IT/plugins/enabled/225----node.plugin.bash" ] + assert [ ! -L "$BASH_IT/plugins/enabled/250----node.plugin.bash" ] assert [ ! -L "$BASH_IT/plugins/enabled/250----nvm.plugin.bash" ] assert [ ! -L "$BASH_IT/aliases/enabled/250----todo.txt-cli.aliases.bash" ] } @@ -424,22 +424,22 @@ function __migrate_all_components() { assert_line -n 1 'nvm disabled.' assert_line -n 2 'nvm enabled with priority 225.' assert_line -n 3 'If any migration errors were reported, please try the following: reload && bash-it migrate' - assert_line -n 4 'node enabled with priority 250.' + assert_line -n 4 'node enabled with priority 285.' assert [ ! -L "$BASH_IT/plugins/enabled/nvm.plugin.bash" ] assert_link_exist "$BASH_IT/enabled/225---nvm.plugin.bash" - assert_link_exist "$BASH_IT/enabled/250---node.plugin.bash" + assert_link_exist "$BASH_IT/enabled/285---node.plugin.bash" } @test "helpers: verify that existing components are automatically migrated when something is disabled" { ln -s $BASH_IT/plugins/available/nvm.plugin.bash $BASH_IT/plugins/enabled/nvm.plugin.bash assert_link_exist "$BASH_IT/plugins/enabled/nvm.plugin.bash" - ln -s $BASH_IT/plugins/available/node.plugin.bash $BASH_IT/plugins/enabled/250---node.plugin.bash - assert_link_exist "$BASH_IT/plugins/enabled/250---node.plugin.bash" + ln -s $BASH_IT/plugins/available/node.plugin.bash $BASH_IT/plugins/enabled/285---node.plugin.bash + assert_link_exist "$BASH_IT/plugins/enabled/285---node.plugin.bash" run bash-it disable plugin "node" assert_line -n 0 'Migrating plugin node.' assert_line -n 1 'node disabled.' - assert_line -n 2 'node enabled with priority 250.' + assert_line -n 2 'node enabled with priority 285.' assert_line -n 3 'Migrating plugin nvm.' assert_line -n 4 'nvm disabled.' assert_line -n 5 'nvm enabled with priority 225.' @@ -447,8 +447,8 @@ function __migrate_all_components() { assert_line -n 7 'node disabled.' assert [ ! -L "$BASH_IT/plugins/enabled/nvm.plugin.bash" ] assert_link_exist "$BASH_IT/enabled/225---nvm.plugin.bash" - assert [ ! -L "$BASH_IT/plugins/enabled/250---node.plugin.bash" ] - assert [ ! -L "$BASH_IT/enabled/250---node.plugin.bash" ] + assert [ ! -L "$BASH_IT/plugins/enabled/285---node.plugin.bash" ] + assert [ ! -L "$BASH_IT/enabled/285---node.plugin.bash" ] } @test "helpers: enable all plugins" {