Skip to content

Commit 997c59f

Browse files
liucijusBorja Lorente
authored and
Borja Lorente
committed
Add Scalafmt deps toolchain (bazel-contrib#1107)
1 parent 41ade82 commit 997c59f

File tree

4 files changed

+77
-3
lines changed

4 files changed

+77
-3
lines changed

scala/scalafmt/BUILD

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
load("//scala:scala.bzl", "scala_binary")
2+
load("//scala/scalafmt/toolchain:toolchain.bzl", "export_scalafmt_deps", "scalafmt_toolchain")
3+
load("@io_bazel_rules_scala//scala:providers.bzl", "declare_deps_provider")
24

35
filegroup(
46
name = "runner",
@@ -18,10 +20,8 @@ scala_binary(
1820
main_class = "io.bazel.rules_scala.scalafmt.ScalafmtWorker",
1921
visibility = ["//visibility:public"],
2022
deps = [
23+
":scalafmt_classpath",
2124
"//src/java/io/bazel/rulesscala/worker",
22-
"@com_geirsson_metaconfig_core",
23-
"@org_scalameta_parsers",
24-
"@org_scalameta_scalafmt_core",
2525
],
2626
)
2727

@@ -34,3 +34,35 @@ scalafmt_singleton(
3434
name = "phase_scalafmt",
3535
visibility = ["//visibility:public"],
3636
)
37+
38+
declare_deps_provider(
39+
name = "scalafmt_classpath_provider",
40+
deps_id = "scalafmt_classpath",
41+
visibility = ["//visibility:public"],
42+
deps = [
43+
"@com_geirsson_metaconfig_core",
44+
"@org_scalameta_parsers",
45+
"@org_scalameta_scalafmt_core",
46+
],
47+
)
48+
49+
scalafmt_toolchain(
50+
name = "scalafmt_toolchain_impl",
51+
dep_providers = [
52+
":scalafmt_classpath_provider",
53+
],
54+
visibility = ["//visibility:public"],
55+
)
56+
57+
toolchain(
58+
name = "scalafmt_toolchain",
59+
toolchain = ":scalafmt_toolchain_impl",
60+
toolchain_type = "//scala/scalafmt/toolchain:scalafmt_toolchain_type",
61+
visibility = ["//visibility:public"],
62+
)
63+
64+
export_scalafmt_deps(
65+
name = "scalafmt_classpath",
66+
deps_id = "scalafmt_classpath",
67+
visibility = ["//visibility:public"],
68+
)

scala/scalafmt/scalafmt_repositories.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,3 +498,5 @@ def scalafmt_repositories(
498498
],
499499
server_urls = maven_servers,
500500
)
501+
502+
native.register_toolchains("@io_bazel_rules_scala//scala/scalafmt:scalafmt_toolchain")

scala/scalafmt/toolchain/BUILD

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
toolchain_type(
2+
name = "scalafmt_toolchain_type",
3+
visibility = ["//visibility:public"],
4+
)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
load("@io_bazel_rules_scala//scala:providers.bzl", _DepsInfo = "DepsInfo")
2+
load("//scala/private/toolchain_deps:toolchain_deps.bzl", "expose_toolchain_deps")
3+
4+
def _scalafmt_toolchain_impl(ctx):
5+
toolchain = platform_common.ToolchainInfo(
6+
dep_providers = ctx.attr.dep_providers,
7+
)
8+
return [toolchain]
9+
10+
scalafmt_toolchain = rule(
11+
_scalafmt_toolchain_impl,
12+
attrs = {
13+
"dep_providers": attr.label_list(
14+
default = [
15+
"@io_bazel_rules_scala//scala/scalafmt:scalafmt_classpath_provider",
16+
],
17+
providers = [_DepsInfo],
18+
),
19+
},
20+
)
21+
22+
def _export_scalafmt_deps_impl(ctx):
23+
return expose_toolchain_deps(
24+
ctx,
25+
"@io_bazel_rules_scala//scala/scalafmt/toolchain:scalafmt_toolchain_type",
26+
)
27+
28+
export_scalafmt_deps = rule(
29+
_export_scalafmt_deps_impl,
30+
attrs = {
31+
"deps_id": attr.string(
32+
mandatory = True,
33+
),
34+
},
35+
toolchains = ["@io_bazel_rules_scala//scala/scalafmt/toolchain:scalafmt_toolchain_type"],
36+
)

0 commit comments

Comments
 (0)