#!/usr/bin/env bash ##makedesc: Install nodejs + npm via nvm set -eo pipefail installed() { command -v "$1" >/dev/null 2>&1; } isMac() { [ "$(uname -s)" = "Darwin" ]; } isLinux() { [ "$(uname -s)" = "Linux" ]; } NVM_DIR="${NVM_DIR:-$HOME/.nvm}" install() { echo echo "===============================================" echo "Installing nodejs + nvm" echo "===============================================" echo if isMac; then if installed brew; then brew install nvm else echo "ERROR: Install Homebrew first." >&2 exit 1 fi elif isLinux; then curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash else echo "ERROR: This OS is not supported yet!" >&2 exit 1 fi export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/bash_completion" ] && source "$NVM_DIR/bash_completion" nvm install-latest-npm nvm install node nvm use node if ! grep -q 'NVM_DIR' "$HOME/.profile" 2>/dev/null; then cat << EOF >> "$HOME/.profile" # nvm (not nvim!) export NVM_DIR="\$HOME/.nvm" [ -s "\$NVM_DIR/nvm.sh" ] && source "\$NVM_DIR/nvm.sh" [ -s "\$NVM_DIR/bash_completion" ] && source "\$NVM_DIR/bash_completion" EOF fi echo echo "Finish!" nvm current echo } remove() { echo echo "===============================================" echo "Removing nodejs + nvm" echo "===============================================" echo if command -v nvm >/dev/null 2>&1; then nvm unload 2>/dev/null || true fi rm -rf "$NVM_DIR" sed -i '/NVM_DIR/d' "$HOME/.profile" 2>/dev/null || true if isMac && installed brew; then brew uninstall nvm 2>/dev/null || true fi echo echo "Finish!" echo } case "$1" in r|remove|d|delete|p|purge) remove ;; *) install ;; esac