#!/usr/bin/env bash set -e ZULIP_PATH="$(dirname "$0")/../.." ZULIP_SRV="/srv" if [ "$TRAVIS" ] ; then ZULIP_SRV="/home/travis" fi YARN_BIN="$ZULIP_SRV/zulip-yarn/bin/yarn" node_version=8.11.1 yarn_version=1.7.0 # This is a fix for the fact that nvm uses $HOME to determine which # user account's home directory to ~/.config to. Ideally, we'd have a # more systematic fix, like using `sudo -H` everywhere. export HOME=/root current_node_version="none" if hash node 2>/dev/null; then current_node_version="$(node --version)" fi if [ "$($YARN_BIN --version 2>/dev/null)" = "$yarn_version" ] && [ "$current_node_version" = "v$node_version" ]; then echo "Node version $node_version and yarn version $yarn_version are already installed." exit 0 fi if [ "$current_node_version" != "v$node_version" ]; then export NVM_DIR=/usr/local/nvm if ! [ -e "$NVM_DIR/nvm.sh" ]; then wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash fi source "$NVM_DIR/nvm.sh" nvm install "$node_version" && nvm alias default "$node_version" export NODE_BIN="$(nvm which default)" # Fix messed-up uid=500 and group write bits produced by nvm n=$(which node) n=${n%/bin/node} chown -R root:root "$n" chmod -R go-w "$n" # Install node wrapper to /usr/local/bin cp "$ZULIP_PATH/scripts/setup/node-wrapper" /usr/local/bin/node sed -i "s|NODE_PATH|$NODE_BIN|" /usr/local/bin/node fi # Work around the fact that apparently sudo doesn't clear the HOME # environment variable in some cases; we don't want root # accessing/storing yarn configuration in the non-root user's home # directory. export HOME=/root # Install yarn if not installed bash "$ZULIP_PATH/scripts/lib/third/install-yarn.sh" "$ZULIP_SRV" --version "$yarn_version"