Skip to content

Commit

Permalink
fix: cleanup in node_repositories.bzl
Browse files Browse the repository at this point in the history
  • Loading branch information
gregmagolan committed Nov 7, 2019
1 parent b0ebc06 commit afc1a95
Showing 1 changed file with 23 additions and 20 deletions.
43 changes: 23 additions & 20 deletions internal/node/node_repositories.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,8 @@ and expect the file to have sha256sum `09bea8f4ec41e9079fa03093d3b2db7ac5c533185
),
}

NODE_DIR = "bin/nodejs"
YARN_DIR = "bin/yarnpkg"
NODE_EXTRACT_DIR = "bin/nodejs"
YARN_EXTRACT_DIR = "bin/yarnpkg"

GET_SCRIPT_DIR = """
# From stackoverflow.com
Expand All @@ -268,24 +268,27 @@ def _download_node(repository_ctx):
"""
if repository_ctx.attr.vendored_node:
return
if repository_ctx.name == "nodejs":
host = os_name(repository_ctx)
else:
host = repository_ctx.name.split("nodejs_", 1)[1]

# The host is baked into the repository name by design.
# Current these workspaces are:
# @nodejs_darwin_amd64
# @nodejs_linux_amd64
# @nodejs_windows_amd64
host_os = repository_ctx.name.split("nodejs_", 1)[1]

node_version = repository_ctx.attr.node_version
node_repositories = repository_ctx.attr.node_repositories
node_urls = repository_ctx.attr.node_urls

# Download node & npm
node_host_version = "{}-{}".format(node_version, host)
if node_host_version in node_repositories:
filename, strip_prefix, sha256 = node_repositories[node_host_version]
else:
fail("Unknown NodeJS host/version {}".format(node_host_version))
version_host_os = "%s-%s" % (node_version, host_os)
if not version_host_os in node_repositories:
fail("Unknown NodeJS version-host %s" % version_host_os)
filename, strip_prefix, sha256 = node_repositories[version_host_os]

repository_ctx.download_and_extract(
url = [url.format(version = node_version, filename = filename) for url in node_urls],
output = NODE_DIR,
output = NODE_EXTRACT_DIR,
stripPrefix = strip_prefix,
sha256 = sha256,
)
Expand All @@ -306,11 +309,11 @@ def _download_yarn(repository_ctx):
if yarn_version in yarn_repositories:
filename, strip_prefix, sha256 = yarn_repositories[yarn_version]
else:
fail("Unknown Yarn version {}".format(yarn_version))
fail("Unknown Yarn version %s" % yarn_version)

repository_ctx.download_and_extract(
url = [url.format(version = yarn_version, filename = filename) for url in yarn_urls],
output = YARN_DIR,
output = YARN_EXTRACT_DIR,
stripPrefix = strip_prefix,
sha256 = sha256,
)
Expand Down Expand Up @@ -353,8 +356,8 @@ def _prepare_node(repository_ctx):
"lib/node_modules/npm/bin/npm-cli.js" if not is_windows else "node_modules/npm/bin/npm-cli.js",
] if f])
else:
node_exec = "{}/bin/node".format(NODE_DIR) if not is_windows else "{}/node.exe".format(NODE_DIR)
npm_script = "{}/lib/node_modules/npm/bin/npm-cli.js".format(NODE_DIR) if not is_windows else "{}/node_modules/npm/bin/npm-cli.js".format(NODE_DIR)
node_exec = ("%s/bin/node" % NODE_EXTRACT_DIR) if not is_windows else ("%s/node.exe" % NODE_EXTRACT_DIR)
npm_script = ("%s/lib/node_modules/npm/bin/npm-cli.js" % NODE_EXTRACT_DIR) if not is_windows else ("%s/node_modules/npm/bin/npm-cli.js" % NODE_EXTRACT_DIR)
node_exec_label = node_exec
if repository_ctx.attr.vendored_yarn:
yarn_script = "/".join([f for f in [
Expand All @@ -365,7 +368,7 @@ def _prepare_node(repository_ctx):
"bin/yarn.js",
] if f])
else:
yarn_script = "{}/bin/yarn.js".format(YARN_DIR)
yarn_script = "%s/bin/yarn.js" % YARN_EXTRACT_DIR
node_entry = "bin/node" if not is_windows else "bin/node.cmd"
npm_node_repositories_entry = "bin/npm_node_repositories" if not is_windows else "bin/npm_node_repositories.cmd"
yarn_node_repositories_entry = "bin/yarn_node_repositories" if not is_windows else "bin/yarn_node_repositories.cmd"
Expand Down Expand Up @@ -420,8 +423,8 @@ CALL "%SCRIPT_DIR%\\{node}" {args} %*
# Immediately exit if any command fails.
set -e
# Generated by node_repositories.bzl
export NODE_REPOSITORY_ARGS={}
""".format(node_repo_args), executable = True)
export NODE_REPOSITORY_ARGS={args}
""".format(args = node_repo_args), executable = True)

# The entry points for npm for osx/linux and windows
# Runs npm using appropriate node entry point
Expand Down Expand Up @@ -622,7 +625,7 @@ def _nodejs_host_os_alias_impl(repository_ctx):
else:
node_bin_repository = node_repository
actual_node_bin = "%s/%s" % (
NODE_DIR,
NODE_EXTRACT_DIR,
"node.exe" if is_windows_host else "bin/node",
)
repository_ctx.template(
Expand Down

0 comments on commit afc1a95

Please sign in to comment.