mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-28 12:41:33 -05:00
If system's node is overriden by something in PATH, having NODE_DIR empty will cause the script to still use node found in /bin/. Only consider the first case if NODE_DIR is not empty.
44 lines
1.3 KiB
Bash
Executable File
44 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
OUT="$1"
|
|
|
|
find_node() {
|
|
local NODE="${NODE_DIR}/bin/node"
|
|
local CE_NODE="/opt/compiler-explorer/node/bin/node"
|
|
local SYS_NODE="$(which node 2>/dev/null)"
|
|
local SYS_NODEJS="$(which nodejs 2>/dev/null)"
|
|
|
|
if test -x "${NODE}" -a -n "${NODE_DIR}"; then
|
|
echo "${NODE}"
|
|
elif test -x "${CE_NODE}"; then
|
|
echo "${CE_NODE}"
|
|
elif test -x "${SYS_NODE}"; then
|
|
echo "${SYS_NODE}"
|
|
elif test -x "${SYS_NODEJS}"; then
|
|
echo "${SYS_NODEJS}"
|
|
else
|
|
>&2 echo "Unable to find a node"
|
|
fi
|
|
}
|
|
|
|
NODE=$(find_node)
|
|
|
|
NODE_VERSION_USED=10
|
|
NODE_VERSION=$(${NODE} --version)
|
|
NODE_MAJOR_VERSION=$(echo ${NODE_VERSION} | cut -f1 -d. | sed 's/^v//g')
|
|
|
|
if test ${NODE_MAJOR_VERSION} -lt ${NODE_VERSION_USED}; then
|
|
>&2 echo Compiler Explorer needs node v${NODE_VERSION_USED}.x, but ${NODE_VERSION} was found.
|
|
>&2 echo Visit https://nodejs.org/ for installation instructions
|
|
>&2 echo To configure where we look for node, set NODE_DIR to its installation base
|
|
exit 1
|
|
fi
|
|
|
|
if test ${NODE_MAJOR_VERSION} -gt ${NODE_VERSION_USED}; then
|
|
>&2 echo Compiler Explorer needs node v${NODE_VERSION_USED}.x, but ${NODE_VERSION} was found.
|
|
>&2 echo The higher node version might work but it has not been tested.
|
|
fi
|
|
|
|
echo ${NODE} > ${OUT}
|