forked from heroku/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_fetch_node_binary
More file actions
executable file
·51 lines (43 loc) · 1.36 KB
/
_fetch_node_binary
File metadata and controls
executable file
·51 lines (43 loc) · 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env bash
# inputs
# $1 OUTPUT_DIR
# $OS
# $ARCH
# $NODE_VERSION
source ./scripts/_init
set -x
if [[ $# -ne 1 ]]; then
echo "USAGE: $0 OUTPUT_DIR"
exit 1
fi
output=$1
node_ext=""
NODE_VERSION=$(node -p "require('./package.json')['cli-engine'].node || process.versions.node")
mkdir -p "$output"
mkdir -p "$TMP_DIR/node"
mkdir -p "$TMP_DIR/cache/node"
# install node
if [ "${OS}" == "windows" ]; then
node_ext=".exe"
node_base=node-v${NODE_VERSION}-win-${ARCH}
if [ ! -f "$TMP_DIR/cache/node/${node_base}" ]; then
echo "fetching ${node_base}"
url=https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-win-${ARCH}.7z
curl -fSsLo "$TMP_DIR/node/${node_base}.7z" "${url}"
(
cd "$TMP_DIR/node"
7z x -bd -y "${TMP_DIR}/node/${node_base}.7z" > /dev/null
mv "${node_base}/node.exe" "$TMP_DIR/cache/node/${node_base}"
)
fi
else
if [ "${ARCH}" == "arm" ]; then node_arch=armv7l; else node_arch="${ARCH}"; fi
node_base=node-v${NODE_VERSION}-${OS}-${node_arch}
if [ ! -f "$TMP_DIR/cache/node/${node_base}" ]; then
echo "fetching ${node_base}"
url=https://nodejs.org/dist/v${NODE_VERSION}/${node_base}.tar.xz
curl -fSsL "${url}" | tar -C "${TMP_DIR}/node" -xJ
mv "$TMP_DIR/node/${node_base}/bin/node" "$TMP_DIR/cache/node/${node_base}"
fi
fi
cp "${TMP_DIR}/cache/node/${node_base}" "${output}/node${node_ext}"