1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#!/usr/bin/env bash
set -e
# Find the relevant checksum from:
# https://nodejs.org/dist/v{VERSION}/SHASUMS256.txt
# The node-v{VERSION}-linux-x64.tar.xz checksum is the one we need.
NODE_SHA256=de2c694e7081c37022817d27a65b02f69ecf4c49699d65585e8e24431b7bc920
cd $(dirname $0)
cd ../..
NODE_VERSION=$(cat .nvmrc)
check_node_needed () {
if [ -x ext/node/bin/node ]
then
local CURRENT_NODE_VERSION=$(ext/node/bin/node --version 2>/dev/null)
if [[ "$CURRENT_NODE_VERSION" == "$NODE_VERSION" ]]
then
echo "Node $NODE_VERSION is already installed, skipping" >&2
exit 0
fi
fi
}
verify_checksum () {
local FILE=$1
local EXPECTED_CHECKSUM=$2
local ACTUAL_CHECKSUM=$(sha256sum "$FILE")
[[ "$EXPECTED_CHECKSUM $FILE" != "$ACTUAL_CHECKSUM" ]]
}
download_node () {
local NODE_FILENAME="node-${NODE_VERSION}-linux-x64.tar.xz"
local NODE_URL="https://nodejs.org/dist/${NODE_VERSION}/${NODE_FILENAME}"
local NODE_ARCHIVE_DEST="/tmp/${NODE_FILENAME}"
echo "Downloading Node ${NODE_VERSION} from ${NODE_URL}"
wget -O "$NODE_ARCHIVE_DEST" "$NODE_URL"
if verify_checksum "$NODE_ARCHIVE_DEST" "$NODE_SHA256"
then
echo "Checksum failed!" >&2
exit 1
fi
rm -rf ext/node
mkdir -p ext/node
echo "Extracting ${NODE_FILENAME}"
tar xf "${NODE_ARCHIVE_DEST}" --strip-components=1 -C "ext/node"
# Clean up temp file
rm "${NODE_ARCHIVE_DEST}"
cp ext/node/bin/node ext/node/bin/shiny-server
rm ext/node/bin/npm
}
check_node_needed
download_node
|