|
1 | 1 | #!/usr/bin/env bash
|
2 | 2 |
|
| 3 | +# Define Node.js version and base URL |
| 4 | +NODE_VERSION="v18.20.5" |
| 5 | +NODE_BASE_URL="https://nodejs.org/download/release/${NODE_VERSION}" |
| 6 | +NODE_INSTALL_DIR="./node" |
| 7 | + |
3 | 8 | cd "$(dirname "$0")/app"
|
4 | 9 |
|
5 |
| -which node 2>/dev/null |
6 |
| -isNode=$? |
7 |
| -echo NodeJS status = $isNode |
| 10 | +# Function to determine the appropriate Node.js binary |
| 11 | +get_node_binary_url() { |
| 12 | + OS_TYPE=$(uname | tr '[:upper:]' '[:lower:]') |
| 13 | + MACHINE_TYPE=$(uname -m) |
| 14 | + |
| 15 | + case "${OS_TYPE}" in |
| 16 | + linux) |
| 17 | + case "${MACHINE_TYPE}" in |
| 18 | + x86_64) echo "${NODE_BASE_URL}/node-${NODE_VERSION}-linux-x64.tar.gz" ;; |
| 19 | + *64) |
| 20 | + # If the machine type ends with '64' and is not x86_64, assume it's ARM64 |
| 21 | + echo "${NODE_BASE_URL}/node-${NODE_VERSION}-linux-arm64.tar.gz" ;; |
| 22 | + armv7l) echo "${NODE_BASE_URL}/node-${NODE_VERSION}-linux-armv7l.tar.gz" ;; |
| 23 | + ppc64le) echo "${NODE_BASE_URL}/node-${NODE_VERSION}-linux-ppc64le.tar.gz" ;; |
| 24 | + s390x) echo "${NODE_BASE_URL}/node-${NODE_VERSION}-linux-s390x.tar.gz" ;; |
| 25 | + *) echo "Unsupported architecture: ${MACHINE_TYPE}" >&2; exit 1 ;; |
| 26 | + esac |
| 27 | + ;; |
| 28 | + darwin) |
| 29 | + case "${MACHINE_TYPE}" in |
| 30 | + x86_64) echo "${NODE_BASE_URL}/node-${NODE_VERSION}-darwin-x64.tar.gz" ;; |
| 31 | + arm64) echo "${NODE_BASE_URL}/node-${NODE_VERSION}-darwin-arm64.tar.gz" ;; |
| 32 | + *) echo "Unsupported architecture: ${MACHINE_TYPE}" >&2; exit 1 ;; |
| 33 | + esac |
| 34 | + ;; |
| 35 | + *) |
| 36 | + echo "Unsupported OS: ${OS_TYPE}" >&2 |
| 37 | + exit 1 |
| 38 | + ;; |
| 39 | + esac |
| 40 | +} |
| 41 | + |
| 42 | +# Check if Node.js is globally installed |
| 43 | +which node >/dev/null 2>&1 |
| 44 | +IS_NODE_GLOBAL=$? |
8 | 45 |
|
9 |
| -if [ $isNode -eq 0 ]; then |
| 46 | +if [ $IS_NODE_GLOBAL -eq 0 ]; then |
10 | 47 | node -e "process.exit(Number(process.version.substr(1).split('.')[0]) > 5 ? 0 : 1)"
|
11 |
| - isNode=$? |
| 48 | + IS_NODE_GLOBAL=$? |
12 | 49 | fi
|
13 |
| -if [ $isNode -eq 0 ]; then |
| 50 | + |
| 51 | +if [ $IS_NODE_GLOBAL -eq 0 ]; then |
14 | 52 | echo "Installer is using your system NodeJS."
|
15 | 53 | echo
|
16 |
| - node install.js `which node` $1 |
| 54 | + node install.js "$(which node)" "$1" |
17 | 55 | else
|
18 |
| - MACHINE_TYPE=`uname -m` |
19 |
| - echo "Installer is using the embedded NodeJS" |
20 |
| - echo |
21 |
| - if [[ $OSTYPE == 'darwin'* ]]; then |
22 |
| - if [[ $MACHINE_TYPE == 'arm64' ]]; then |
23 |
| - ../node/arm64/node install.js --add_node $1 |
24 |
| - else |
25 |
| - ../node/x64/node install.js --add_node $1 |
26 |
| - fi |
27 |
| - elif [ ${MACHINE_TYPE} == 'x86_64' ]; then |
28 |
| - ../node/x64/node install.js --add_node $1 |
29 |
| - else |
30 |
| - ../node/x86/node install.js --add_node $1 |
31 |
| - fi |
| 56 | + echo "Node.js not found or version is less than 6. Downloading Node.js..." |
| 57 | + mkdir -p "${NODE_INSTALL_DIR}" |
| 58 | + |
| 59 | + NODE_URL=$(get_node_binary_url) |
| 60 | + NODE_ARCHIVE="${NODE_INSTALL_DIR}/node.tar.gz" |
| 61 | + |
| 62 | + echo "Downloading ${NODE_URL}..." |
| 63 | + curl -o "${NODE_ARCHIVE}" "${NODE_URL}" |
| 64 | + |
| 65 | + echo "Extracting Node.js..." |
| 66 | + tar -xzf "${NODE_ARCHIVE}" -C "${NODE_INSTALL_DIR}" --strip-components=1 |
| 67 | + rm "${NODE_ARCHIVE}" |
| 68 | + |
| 69 | + echo "Running installer with embedded Node.js..." |
| 70 | + "${NODE_INSTALL_DIR}/bin/node" install.js --add_node "$1" |
32 | 71 | fi
|
0 commit comments