chore: remove expand_template in exchange for bazel-lib
diff --git a/MODULE.bazel b/MODULE.bazel
index 993df29..baf8bde 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -6,7 +6,7 @@
compatibility_level = 1,
)
-bazel_dep(name = "aspect_bazel_lib", version = "1.31.2")
+bazel_dep(name = "aspect_bazel_lib", version = "1.32.0")
bazel_dep(name = "bazel_skylib", version = "1.4.1")
bazel_dep(name = "rules_nodejs", version = "5.8.2")
bazel_dep(name = "platforms", version = "0.0.4")
diff --git a/js/private/BUILD.bazel b/js/private/BUILD.bazel
index f427f79..79b5efb 100644
--- a/js/private/BUILD.bazel
+++ b/js/private/BUILD.bazel
@@ -133,12 +133,6 @@
)
bzl_library(
- name = "expand_template",
- srcs = ["expand_template.bzl"],
- visibility = ["//visibility:public"],
-)
-
-bzl_library(
name = "js_image_layer",
srcs = ["js_image_layer.bzl"],
visibility = [
@@ -151,14 +145,6 @@
],
)
-js_binary(
- name = "expand_template_binary",
- entry_point = "expand_template.js",
- # meant to run out of the execroot
- env = {"BAZEL_BINDIR": "."},
- visibility = ["//visibility:public"],
-)
-
copy_to_bin(
name = "js_devserver_entrypoint",
srcs = ["js_run_devserver.mjs"],
diff --git a/js/private/expand_template.bzl b/js/private/expand_template.bzl
deleted file mode 100644
index 2a7ffc9..0000000
--- a/js/private/expand_template.bzl
+++ /dev/null
@@ -1,119 +0,0 @@
-"expand_template rule"
-
-load("@aspect_bazel_lib//lib:expand_make_vars.bzl", _expand_locations = "expand_locations", _expand_variables = "expand_variables")
-load("@aspect_bazel_lib//lib:stamping.bzl", "STAMP_ATTRS", "maybe_stamp")
-load("@bazel_skylib//lib:dicts.bzl", "dicts")
-
-def _expand_substitutions(ctx, substitutions):
- result = {}
- for k, v in substitutions.items():
- result[k] = " ".join([
- _expand_variables(ctx, e, outs = [ctx.outputs.out], attribute_name = "substitutions")
- for e in _expand_locations(ctx, v, ctx.attr.data).split(" ")
- ])
- return result
-
-def _impl(ctx):
- substitutions = _expand_substitutions(ctx, ctx.attr.substitutions)
-
- stamp = maybe_stamp(ctx)
- if stamp:
- substitutions = dicts.add(substitutions, _expand_substitutions(ctx, ctx.attr.stamp_substitutions))
-
- inputs = [
- ctx.file.template,
- stamp.volatile_status_file,
- stamp.stable_status_file,
- ]
-
- args = ctx.actions.args()
- args.add(ctx.file.template.path)
- args.add(ctx.outputs.out.path)
- args.add(stamp.volatile_status_file)
- args.add(stamp.stable_status_file)
- args.add(substitutions)
- args.add(ctx.attr.is_executable)
- args.use_param_file("%s", use_always = True)
-
- ctx.actions.run(
- arguments = [args],
- outputs = [ctx.outputs.out],
- inputs = inputs,
- executable = ctx.executable._expand_template_binary,
- )
- else:
- ctx.actions.expand_template(
- template = ctx.file.template,
- output = ctx.outputs.out,
- substitutions = substitutions,
- is_executable = ctx.attr.is_executable,
- )
-
- all_outs = [ctx.outputs.out]
- runfiles = ctx.runfiles(files = all_outs)
- return [DefaultInfo(files = depset(all_outs), runfiles = runfiles)]
-
-expand_template_lib = struct(
- doc = """Template expansion with stamp var support.
-
-This performs a simple search over the template file for the keys in substitutions,
-and replaces them with the corresponding values.
-
-Values may also use location templates as documented in
-[expand_locations](https://github.com/aspect-build/bazel-lib/blob/main/docs/expand_make_vars.md#expand_locations)
-as well as [configuration variables](https://docs.bazel.build/versions/main/skylark/lib/ctx.html#var)
-such as `$(BINDIR)`, `$(TARGET_CPU)`, and `$(COMPILATION_MODE)` as documented in
-[expand_variables](https://github.com/aspect-build/bazel-lib/blob/main/docs/expand_make_vars.md#expand_variables).
-
-If stamp attribute is True, stamp variable substitutions are supported with {{STAMP_VAR}} tokens.
-""",
- implementation = _impl,
- attrs = dict({
- "data": attr.label_list(
- doc = "List of targets for additional lookup information.",
- allow_files = True,
- ),
- "is_executable": attr.bool(
- doc = "Whether to mark the output file as executable.",
- ),
- "out": attr.output(
- doc = "Where to write the expanded file.",
- mandatory = True,
- ),
- "stamp_substitutions": attr.string_dict(
- doc = """Mapping of strings to substitutions.
-
- There are overlayed on top of substitutions when stamping is enabled
- for the target.
-
- Substitutions can contain $(execpath :target) and $(rootpath :target)
- expansions, $(MAKEVAR) expansions and {{STAMP_VAR}} expansions when
- stamping is enabled for the target.
- """,
- ),
- "substitutions": attr.string_dict(
- doc = """Mapping of strings to substitutions.
-
- Substitutions can contain $(execpath :target) and $(rootpath :target)
- expansions, $(MAKEVAR) expansions and {{STAMP_VAR}} expansions when
- stamping is enabled for the target.
- """,
- ),
- "template": attr.label(
- doc = "The template file to expand.",
- mandatory = True,
- allow_single_file = True,
- ),
- "_expand_template_binary": attr.label(
- executable = True,
- default = Label("//js/private:expand_template_binary"),
- cfg = "exec",
- ),
- }, **STAMP_ATTRS),
-)
-
-expand_template = rule(
- doc = expand_template_lib.doc,
- implementation = expand_template_lib.implementation,
- attrs = expand_template_lib.attrs,
-)
diff --git a/js/private/expand_template.js b/js/private/expand_template.js
deleted file mode 100644
index 3628c13..0000000
--- a/js/private/expand_template.js
+++ /dev/null
@@ -1,89 +0,0 @@
-const fs = require('fs')
-
-/**
- * The status files are expected to look like
- * BUILD_SCM_HASH 83c699db39cfd74526cdf9bebb75aa6f122908bb
- * BUILD_SCM_LOCAL_CHANGES true
- * STABLE_BUILD_SCM_VERSION 6.0.0-beta.6+12.sha-83c699d.with-local-changes
- * BUILD_TIMESTAMP 1520021990506
- *
- * Parsing regex is created based on Bazel documentation describing the status file schema:
- * The key names can be anything but they may only use upper case letters and underscores. The
- * first space after the key name separates it from the value. The value is the rest of the line
- * (including additional whitespace).
- */
-function _parseStatusFile(statusFilePath) {
- const results = {}
- const statusFile = fs.readFileSync(statusFilePath, { encoding: 'utf-8' })
- for (const match of `\n${statusFile}`.matchAll(/^([^\s]+)\s+(.*)/gm)) {
- // Lines which go unmatched define an index value of `0` and should be skipped.
- if (match.index === 0) {
- continue
- }
- results[match[1]] = match[2]
- }
- return results
-}
-
-function _unquoteArgs(s) {
- return s.replace(/^'(.*)'$/, '$1')
-}
-
-function _replaceAll(value, token, replacement) {
- // String.prototype.replaceAll was only added in Node.js 5; polyfill
- // if it is not available
- if (value.replaceAll) {
- return value.replaceAll(token, replacement)
- } else {
- while (value.indexOf(token) != -1) {
- value = value.replace(token, replacement)
- }
- return value
- }
-}
-
-function main(args) {
- args = fs
- .readFileSync(args[0], { encoding: 'utf-8' })
- .split('\n')
- .map(_unquoteArgs)
- const [
- template,
- out,
- volatileStatusFile,
- stableStatusFile,
- substitutionsJson,
- isExecutable,
- ] = args
-
- const substitutions = JSON.parse(substitutionsJson)
-
- const statuses = {
- ..._parseStatusFile(volatileStatusFile),
- ..._parseStatusFile(stableStatusFile),
- }
-
- const statusSubstitutions = []
- for (const key of Object.keys(statuses)) {
- statusSubstitutions.push([`{{${key}}}`, statuses[key]])
- }
-
- for (const key of Object.keys(substitutions)) {
- let value = substitutions[key]
- statusSubstitutions.forEach(([token, replacement]) => {
- value = _replaceAll(value, token, replacement)
- })
- substitutions[key] = value
- }
-
- let content = fs.readFileSync(template, { encoding: 'utf-8' })
- for (const key of Object.keys(substitutions)) {
- content = _replaceAll(content, key, substitutions[key])
- }
- const mode = isExecutable ? 0o777 : 0x666
- fs.writeFileSync(out, content, { mode })
-}
-
-if (require.main === module) {
- process.exitCode = main(process.argv.slice(2))
-}
diff --git a/js/private/test/expand_template/BUILD.bazel b/js/private/test/expand_template/BUILD.bazel
deleted file mode 100644
index c68661b..0000000
--- a/js/private/test/expand_template/BUILD.bazel
+++ /dev/null
@@ -1,60 +0,0 @@
-load("@aspect_bazel_lib//lib:diff_test.bzl", "diff_test")
-load("@aspect_bazel_lib//lib:testing.bzl", "assert_contains")
-load("//js/private:expand_template.bzl", "expand_template")
-
-expand_template(
- name = "a_tmpl_stamp",
- out = "a_stamp",
- data = ["a.tmpl"],
- stamp = 1,
- stamp_substitutions = {
- "{{VERSION}}": "v{{BUILD_SCM_VERSION}}",
- },
- substitutions = {
- "{{TMPL_PATH}}": "$(rootpath a.tmpl)",
- "{{VERSION}}": "v0.0.0",
- "{{WORKSPACE}}": "$(WORKSPACE)",
- },
- template = "a.tmpl",
-)
-
-diff_test(
- name = "a_stamp_test",
- file1 = ":a_stamp",
- file2 = select({
- "@aspect_bazel_lib//lib:bzlmod": "a_stamp_expected_bzlmod",
- "//conditions:default": "a_stamp_expected",
- }),
-)
-
-expand_template(
- name = "a_tmpl",
- out = "a",
- data = ["a.tmpl"],
- stamp = 0,
- stamp_substitutions = {
- "{{VERSION}}": "v{{BUILD_SCM_VERSION}}",
- },
- substitutions = {
- "{{TMPL_PATH}}": "$(rootpath a.tmpl)",
- "{{VERSION}}": "v0.0.0",
- "{{WORKSPACE}}": "$(WORKSPACE)",
- },
- template = "a.tmpl",
-)
-
-diff_test(
- name = "a_test",
- file1 = ":a",
- file2 = select({
- "@aspect_bazel_lib//lib:bzlmod": "a_expected_bzlmod",
- "//conditions:default": "a_expected",
- }),
-)
-
-# This test requires that DefaultInfo be returned with the proper outputs.
-assert_contains(
- name = "default_info_test",
- actual = ":a_tmpl_stamp",
- expected = "WORKSPACE:",
-)
diff --git a/js/private/test/expand_template/a.tmpl b/js/private/test/expand_template/a.tmpl
deleted file mode 100644
index abe382f..0000000
--- a/js/private/test/expand_template/a.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-WORKSPACE: {{WORKSPACE}}
-VERSION: {{VERSION}}
-TMPL_PATH: {{TMPL_PATH}}
-WORKSPACE: {{WORKSPACE}}
-VERSION: {{VERSION}}
-TMPL_PATH: {{TMPL_PATH}}
diff --git a/js/private/test/expand_template/a_expected b/js/private/test/expand_template/a_expected
deleted file mode 100644
index d67a616..0000000
--- a/js/private/test/expand_template/a_expected
+++ /dev/null
@@ -1,6 +0,0 @@
-WORKSPACE: aspect_rules_js
-VERSION: v0.0.0
-TMPL_PATH: js/private/test/expand_template/a.tmpl
-WORKSPACE: aspect_rules_js
-VERSION: v0.0.0
-TMPL_PATH: js/private/test/expand_template/a.tmpl
diff --git a/js/private/test/expand_template/a_expected_bzlmod b/js/private/test/expand_template/a_expected_bzlmod
deleted file mode 100644
index 103336c..0000000
--- a/js/private/test/expand_template/a_expected_bzlmod
+++ /dev/null
@@ -1,6 +0,0 @@
-WORKSPACE: _main
-VERSION: v0.0.0
-TMPL_PATH: js/private/test/expand_template/a.tmpl
-WORKSPACE: _main
-VERSION: v0.0.0
-TMPL_PATH: js/private/test/expand_template/a.tmpl
diff --git a/js/private/test/expand_template/a_stamp_expected b/js/private/test/expand_template/a_stamp_expected
deleted file mode 100644
index 668b850..0000000
--- a/js/private/test/expand_template/a_stamp_expected
+++ /dev/null
@@ -1,6 +0,0 @@
-WORKSPACE: aspect_rules_js
-VERSION: v1.2.3
-TMPL_PATH: js/private/test/expand_template/a.tmpl
-WORKSPACE: aspect_rules_js
-VERSION: v1.2.3
-TMPL_PATH: js/private/test/expand_template/a.tmpl
diff --git a/js/private/test/expand_template/a_stamp_expected_bzlmod b/js/private/test/expand_template/a_stamp_expected_bzlmod
deleted file mode 100644
index e099fa5..0000000
--- a/js/private/test/expand_template/a_stamp_expected_bzlmod
+++ /dev/null
@@ -1,6 +0,0 @@
-WORKSPACE: _main
-VERSION: v1.2.3
-TMPL_PATH: js/private/test/expand_template/a.tmpl
-WORKSPACE: _main
-VERSION: v1.2.3
-TMPL_PATH: js/private/test/expand_template/a.tmpl
diff --git a/js/repositories.bzl b/js/repositories.bzl
index b5f9fbc..33a2fd2 100644
--- a/js/repositories.bzl
+++ b/js/repositories.bzl
@@ -21,7 +21,7 @@
http_archive(
name = "aspect_bazel_lib",
- sha256 = "0da75299c5a52737b2ac39458398b3f256e41a1a6748e5457ceb3a6225269485",
- strip_prefix = "bazel-lib-1.31.2",
- url = "https://github.com/aspect-build/bazel-lib/releases/download/v1.31.2/bazel-lib-v1.31.2.tar.gz",
+ sha256 = "f1c181b910f821072f38ee45bb87db6b56275458c7f832c54c54ba6334119eca",
+ strip_prefix = "bazel-lib-1.32.0",
+ url = "https://github.com/aspect-build/bazel-lib/releases/download/v1.32.0/bazel-lib-v1.32.0.tar.gz",
)