Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 01ea33e

Browse files
devversionalan-agius4
authored andcommitted
build: migrate CLI schema generation to rules_js
Migrates the CLI schema generation to `rules_js`, also significantly simplifying the rule boilerplate.
1 parent b40fa40 commit 01ea33e

File tree

5 files changed

+32
-80
lines changed

5 files changed

+32
-80
lines changed

‎packages/angular/build/BUILD.bazel‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package")
22
load("@npm2//:defs.bzl", "npm_link_all_packages")
3-
load("//tools:defaults2.bzl", "jasmine_test", "npm_package", "ts_project")
3+
load("//tools:defaults2.bzl", "copy_to_bin", "jasmine_test", "npm_package", "ts_project")
44
load("//tools:ts_json_schema.bzl", "ts_json_schema")
55

66
licenses(["notice"])
@@ -29,6 +29,11 @@ ts_json_schema(
2929
src = "src/builders/ng-packagr/schema.json",
3030
)
3131

32+
copy_to_bin(
33+
name = "schemas",
34+
srcs = glob(["**/schema.json"]),
35+
)
36+
3237
RUNTIME_ASSETS = glob(
3338
include = [
3439
"src/**/schema.json",

‎packages/angular/cli/BUILD.bazel‎

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -74,40 +74,9 @@ ts_project(
7474
)
7575

7676
CLI_SCHEMA_DATA = [
77-
"//packages/angular/build:src/builders/application/schema.json",
78-
"//packages/angular/build:src/builders/dev-server/schema.json",
79-
"//packages/angular/build:src/builders/extract-i18n/schema.json",
80-
"//packages/angular/build:src/builders/ng-packagr/schema.json",
81-
"//packages/angular_devkit/build_angular:src/builders/app-shell/schema.json",
82-
"//packages/angular_devkit/build_angular:src/builders/browser/schema.json",
83-
"//packages/angular_devkit/build_angular:src/builders/browser-esbuild/schema.json",
84-
"//packages/angular_devkit/build_angular:src/builders/dev-server/schema.json",
85-
"//packages/angular_devkit/build_angular:src/builders/extract-i18n/schema.json",
86-
"//packages/angular_devkit/build_angular:src/builders/jest/schema.json",
87-
"//packages/angular_devkit/build_angular:src/builders/web-test-runner/schema.json",
88-
"//packages/angular_devkit/build_angular:src/builders/karma/schema.json",
89-
"//packages/angular_devkit/build_angular:src/builders/ng-packagr/schema.json",
90-
"//packages/angular_devkit/build_angular:src/builders/prerender/schema.json",
91-
"//packages/angular_devkit/build_angular:src/builders/ssr-dev-server/schema.json",
92-
"//packages/angular_devkit/build_angular:src/builders/protractor/schema.json",
93-
"//packages/angular_devkit/build_angular:src/builders/server/schema.json",
94-
"//packages/schematics/angular:app-shell/schema.json",
95-
"//packages/schematics/angular:application/schema.json",
96-
"//packages/schematics/angular:class/schema.json",
97-
"//packages/schematics/angular:component/schema.json",
98-
"//packages/schematics/angular:directive/schema.json",
99-
"//packages/schematics/angular:enum/schema.json",
100-
"//packages/schematics/angular:guard/schema.json",
101-
"//packages/schematics/angular:interceptor/schema.json",
102-
"//packages/schematics/angular:interface/schema.json",
103-
"//packages/schematics/angular:library/schema.json",
104-
"//packages/schematics/angular:module/schema.json",
105-
"//packages/schematics/angular:ng-new/schema.json",
106-
"//packages/schematics/angular:pipe/schema.json",
107-
"//packages/schematics/angular:resolver/schema.json",
108-
"//packages/schematics/angular:service/schema.json",
109-
"//packages/schematics/angular:service-worker/schema.json",
110-
"//packages/schematics/angular:web-worker/schema.json",
77+
"//packages/angular/build:schemas",
78+
"//packages/angular_devkit/build_angular:schemas",
79+
"//packages/schematics/angular:schemas",
11180
]
11281

11382
cli_json_schema(

‎packages/angular_devkit/build_angular/BUILD.bazel‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package")
77
load("@npm2//:defs.bzl", "npm_link_all_packages")
8-
load("//tools:defaults2.bzl", "jasmine_test", "npm_package", "ts_project")
8+
load("//tools:defaults2.bzl", "copy_to_bin", "jasmine_test", "npm_package", "ts_project")
99
load("//tools:ts_json_schema.bzl", "ts_json_schema")
1010

1111
licenses(["notice"])
@@ -79,6 +79,11 @@ ts_json_schema(
7979
src = "src/builders/web-test-runner/schema.json",
8080
)
8181

82+
copy_to_bin(
83+
name = "schemas",
84+
srcs = glob(["**/schema.json"]),
85+
)
86+
8287
RUNTIME_ASSETS = glob(
8388
include = [
8489
"src/**/schema.json",

‎packages/schematics/angular/BUILD.bazel‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# found in the LICENSE file at https://angular.dev/license
55

66
load("@npm2//:defs.bzl", "npm_link_all_packages")
7-
load("//tools:defaults2.bzl", "jasmine_test", "npm_package", "ts_project")
7+
load("//tools:defaults2.bzl", "copy_to_bin", "jasmine_test", "npm_package", "ts_project")
88
load("//tools:ts_json_schema.bzl", "ts_json_schema")
99

1010
licenses(["notice"])
@@ -37,6 +37,11 @@ ALL_SCHEMA_TARGETS = [
3737
for (src, name) in ALL_SCHEMA_TARGETS
3838
]
3939

40+
copy_to_bin(
41+
name = "schemas",
42+
srcs = glob(["**/schema.json"]),
43+
)
44+
4045
RUNTIME_ASSETS = [
4146
"collection.json",
4247
"migrations/migration-collection.json",

‎tools/ng_cli_schema_generator.bzl‎

Lines changed: 11 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,12 @@
1-
# Copyright Google Inc. All Rights Reserved.
2-
#
3-
# Use of this source code is governed by an MIT-style license that can be
4-
# found in the LICENSE file at https://angular.dev/license
5-
6-
def _cli_json_schema_interface_impl(ctx):
7-
args = [
8-
ctx.files.src[0].path,
9-
ctx.outputs.json.path,
10-
]
11-
12-
ctx.actions.run(
13-
inputs = ctx.files.src + ctx.files.data,
14-
executable = ctx.executable._binary,
15-
outputs = [ctx.outputs.json],
16-
arguments = args,
1+
load("@aspect_rules_js//js:defs.bzl", "js_run_binary")
2+
3+
def cli_json_schema(name, src, out, data = []):
4+
js_run_binary(
5+
name = name,
6+
outs = [out],
7+
srcs = [src] + data,
8+
tool = "//tools:ng_cli_schema",
9+
progress_message = "Generating CLI interface from %s" % src,
10+
mnemonic = "NgCliJsonSchema",
11+
args = ["$(rootpath %s)" % src, "$(rootpath %s)" % out],
1712
)
18-
19-
return [DefaultInfo()]
20-
21-
cli_json_schema = rule(
22-
_cli_json_schema_interface_impl,
23-
attrs = {
24-
"src": attr.label(
25-
allow_files = [".json"],
26-
mandatory = True,
27-
),
28-
"out": attr.string(
29-
mandatory = True,
30-
),
31-
"data": attr.label_list(
32-
allow_files = [".json"],
33-
mandatory = True,
34-
),
35-
"_binary": attr.label(
36-
default = Label("//tools:ng_cli_schema"),
37-
executable = True,
38-
cfg = "exec",
39-
),
40-
},
41-
outputs = {
42-
"json": "%{out}",
43-
},
44-
)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /