|  | #!/bin/bash | 
|  |  | 
|  | 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 [[ -x "${NODE}" ]]; then | 
|  | echo "${NODE}" | 
|  | elif [[ -x "${CE_NODE}" ]]; then | 
|  | echo "${CE_NODE}" | 
|  | elif [[ -x "${SYS_NODE}" ]]; then | 
|  | echo "${SYS_NODE}" | 
|  | elif [[ -x "${SYS_NODEJS}" ]]; then | 
|  | echo "${SYS_NODEJS}" | 
|  | else | 
|  | >&2 echo "Unable to find a node" | 
|  | fi | 
|  | } | 
|  |  | 
|  | NODE=$(find_node) | 
|  |  | 
|  | NODE_VERSION_USED=8 | 
|  | NODE_VERSION=$(${NODE} --version) | 
|  | NODE_MAJOR_VERSION=$(echo ${NODE_VERSION} | cut -f1 -d. | sed 's/^v//g') | 
|  |  | 
|  | if [[ ${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 [[ ${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} |