Commit 6a5eec7d authored by David Dollar's avatar David Dollar

allow usage of multiple nodejs versions

parent 0146af87
...@@ -4,6 +4,11 @@ ...@@ -4,6 +4,11 @@
# fail fast # fail fast
set -e set -e
function error() {
echo " ! $*"
exit 1
}
function mktmpdir() { function mktmpdir() {
dir=$(mktemp -t node-$1-XXXX) dir=$(mktemp -t node-$1-XXXX)
rm -rf $dir rm -rf $dir
...@@ -33,7 +38,14 @@ run_npm() { ...@@ -33,7 +38,14 @@ run_npm() {
unset GIT_DIR unset GIT_DIR
function manifest_versions() { function manifest_versions() {
curl "http://${S3_BUCKET}.s3.amazonaws.com/manifest.${1}" -s -o - curl "http://${S3_BUCKET}.s3.amazonaws.com/manifest.${1}" -s -o - | tr -s '\n' ' '
}
function resolve_versions() {
args=""
for version in $1; do args="${args} -v \"${version}\""; done
for version in $2; do args="${args} -r \"${version}\""; done
eval vendor/node-semver/bin/semver ${args} | tail -r | head -n1
} }
# config # config
...@@ -49,14 +61,6 @@ LP_DIR=`cd $(dirname $0); cd ..; pwd` ...@@ -49,14 +61,6 @@ LP_DIR=`cd $(dirname $0); cd ..; pwd`
CACHE_STORE_DIR="$CACHE_DIR/node_modules/$NPM_VERSION" CACHE_STORE_DIR="$CACHE_DIR/node_modules/$NPM_VERSION"
CACHE_TARGET_DIR="$BUILD_DIR/node_modules" CACHE_TARGET_DIR="$BUILD_DIR/node_modules"
# bootstrap node
NODE_PACKAGE="http://${S3_BUCKET}.s3.amazonaws.com/nodejs-${DEFAULT_NODE_VERSION}.tgz"
VENDORED_NODE="$(mktmpdir node)"
echo "-----> Bootstraping Node.js"
mkdir -p $VENDORED_NODE && curl $NODE_PACKAGE -s -o - | tar xzf - -C $VENDORED_NODE
OLDPATH="$PATH"
PATH="$VENDORED_NODE/bin:$PATH"
# determine available versions # determine available versions
NODEJS_VERSIONS=$(manifest_versions "nodejs") NODEJS_VERSIONS=$(manifest_versions "nodejs")
NPM_VERSIONS=$(manifest_versions "npm") NPM_VERSIONS=$(manifest_versions "npm")
...@@ -84,7 +88,6 @@ else ...@@ -84,7 +88,6 @@ else
NODE_VERSION=${RESOLVED_NODE} NODE_VERSION=${RESOLVED_NODE}
fi fi
fi fi
echo "-----> Using Node.js version: ${NODE_VERSION}" echo "-----> Using Node.js version: ${NODE_VERSION}"
# resolve npm version # resolve npm version
...@@ -94,16 +97,13 @@ else ...@@ -94,16 +97,13 @@ else
RESOLVED_NPM=$(resolve_versions "${NPM_VERSIONS}" "${REQUESTED_NPM_VERSION}") RESOLVED_NPM=$(resolve_versions "${NPM_VERSIONS}" "${REQUESTED_NPM_VERSION}")
if [ "${RESOLVED_NPM}" == "" ]; then if [ "${RESOLVED_NPM}" == "" ]; then
error "Requested npm version: ${REQUESTED_NPM_VERSION} does not match available versions: ${NPMJS_VERSIONS}" error "Requested Node.js version: ${REQUESTED_NPM_VERSION} does not match available versions: ${NPMJS_VERSIONS}"
else else
NPM_VERSION=${RESOLVED_NPM} NPM_VERSION=${RESOLVED_NPM}
fi fi
fi fi
echo "-----> Using npm version: ${NPM_VERSION}" echo "-----> Using npm version: ${NPM_VERSION}"
# reset path to undo bootstrapped node
PATH="$OLDPATH"
# s3 packages # s3 packages
NODE_PACKAGE="http://${S3_BUCKET}.s3.amazonaws.com/nodejs-${NODE_VERSION}.tgz" NODE_PACKAGE="http://${S3_BUCKET}.s3.amazonaws.com/nodejs-${NODE_VERSION}.tgz"
NPM_PACKAGE="http://${S3_BUCKET}.s3.amazonaws.com/npm-${NPM_VERSION}.tgz" NPM_PACKAGE="http://${S3_BUCKET}.s3.amazonaws.com/npm-${NPM_VERSION}.tgz"
...@@ -114,9 +114,6 @@ VENDORED_NODE="$(mktmpdir node)" ...@@ -114,9 +114,6 @@ VENDORED_NODE="$(mktmpdir node)"
VENDORED_NPM="$(mktmpdir npm)" VENDORED_NPM="$(mktmpdir npm)"
VENDORED_SCONS="$(mktmpdir scons)" VENDORED_SCONS="$(mktmpdir scons)"
# determine node version
echo "available versions of node: $(manifest_versions "nodejs")"
# download and unpack packages # download and unpack packages
echo "-----> Fetching Node.js binaries" echo "-----> Fetching Node.js binaries"
mkdir -p $VENDORED_NODE && curl $NODE_PACKAGE -s -o - | tar xzf - -C $VENDORED_NODE mkdir -p $VENDORED_NODE && curl $NODE_PACKAGE -s -o - | tar xzf - -C $VENDORED_NODE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment