asdf-nodejs/bin/install

137 lines
3.3 KiB
Bash
Executable File

#!/usr/bin/env bash
install_nodejs() {
local install_type=$1
local version=$2
local install_path=$3
if [ "$TMPDIR" = "" ]; then
local tmp_download_dir=$(mktemp -d)
else
local tmp_download_dir=$TMPDIR
fi
local source_path=$(get_download_file_path $install_type $version $tmp_download_dir)
download_source_file $install_type $version $source_path
# running this in a subshell
# we don't want to disturb current working dir
(
if [ "$install_type" != "version" ]; then
tar zxf $source_path -C $install_path --strip-components=1 || exit 1
cd $install_path
local configure_options="$(construct_configure_options $install_path)"
./configure $configure_options || exit 1
make
make install
if [ $? -ne 0 ]; then
rm -rf $install_path
exit 1
fi
else
tar zxf $source_path -C $install_path --strip-components=1 || exit 1
fi
mkdir -p $install_path/.npm/lib/node_modules/.hooks
cp $(dirname $(dirname $0))/npm-hooks/* $install_path/.npm/lib/node_modules/.hooks/
chmod +x $install_path/.npm/lib/node_modules/.hooks/*
)
}
construct_configure_options() {
local install_path=$1
if [ "$NODEJS_CONFIGURE_OPTIONS" = "" ]; then
local configure_options="$(os_based_configure_options) --prefix=$install_path"
if [ "$NODEJS_EXTRA_CONFIGURE_OPTIONS" != "" ]; then
configure_options="$configure_options $NODEJS_EXTRA_CONFIGURE_OPTIONS"
fi
else
local configure_options="$NODEJS_CONFIGURE_OPTIONS --prefix=$install_path"
fi
echo "$configure_options"
}
os_based_configure_options() {
local operating_system=$(uname -a)
local configure_options=""
if [[ "$operating_system" =~ "x86_64" ]]; then
local cpu_type="x64"
else
local cpu_type="x86"
fi
configure_options="$configure_options --dest-cpu=$cpu_type"
echo $configure_options
}
download_source_file() {
local install_type=$1
local version=$2
local download_path=$3
local download_url=$(get_download_url $install_type $version)
curl -Lo $download_path -C - $download_url
}
get_download_file_path() {
local install_type=$1
local version=$2
local tmp_download_dir=$3
if [ "$install_type" = "version" ]; then
if [[ "$operating_system" =~ "x86_64" ]]; then
local cpu_type="x64"
else
local cpu_type="x86"
fi
if [[ "$operating_system" =~ "Darwin" ]]; then
local pkg_name="node-v${version}-darwin-${cpu_type}"
else # we'll assume it is linux
local pkg_name="node-v${version}-linux-${cpu_type}"
fi
else
local pkg_name="${version}.tar.gz"
fi
echo "$tmp_download_dir/$pkg_name"
}
get_download_url() {
local install_type=$1
local version=$2
local operating_system=$(uname -a)
if [ "$install_type" = "version" ]; then
if [[ "$operating_system" =~ "x86_64" ]]; then
local cpu_type="x64"
else
local cpu_type="x86"
fi
if [[ "$operating_system" =~ "Darwin" ]]; then
echo "https://nodejs.org/dist/v${version}/node-v${version}-darwin-${cpu_type}.tar.gz"
else # we'll assume it is linux
echo "https://nodejs.org/dist/v${version}/node-v${version}-linux-${cpu_type}.tar.gz"
fi
else
echo "https://github.com/nodejs/node/archive/${version}.tar.gz"
fi
}
install_nodejs $ASDF_INSTALL_TYPE $ASDF_INSTALL_VERSION $ASDF_INSTALL_PATH