diff --git a/ts/components/BUILD.bazel b/ts/components/BUILD.bazel index fa706524f..aa35ce8a7 100644 --- a/ts/components/BUILD.bazel +++ b/ts/components/BUILD.bazel @@ -3,7 +3,9 @@ load("//ts:prettier.bzl", "prettier_test") load("//ts:eslint.bzl", "eslint_test") load("//ts:typescript.bzl", "typescript") -compile_svelte() +compile_svelte( + deps = ["//sass/bootstrap"], +) typescript( name = "components", diff --git a/ts/deck-options/BUILD.bazel b/ts/deck-options/BUILD.bazel index f547d5a9e..74971680e 100644 --- a/ts/deck-options/BUILD.bazel +++ b/ts/deck-options/BUILD.bazel @@ -18,7 +18,11 @@ compile_sass( ], ) -compile_svelte() +compile_svelte( + deps = [ + "//sass/bootstrap", + ], +) typescript( name = "index", diff --git a/ts/svelte/svelte.bzl b/ts/svelte/svelte.bzl index 92fcad24b..2f45ddc66 100644 --- a/ts/svelte/svelte.bzl +++ b/ts/svelte/svelte.bzl @@ -3,6 +3,17 @@ load("@build_bazel_rules_nodejs//:providers.bzl", "DeclarationInfo", "declaratio load("@io_bazel_rules_sass//:defs.bzl", "SassInfo") load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +def _get_dep_sources(dep): + if SassInfo in dep: + return dep[SassInfo].transitive_sources + elif DeclarationInfo in dep: + return dep[DeclarationInfo].transitive_declarations + else: + return [] + +def _get_sources(deps): + return depset([], transitive = [_get_dep_sources(dep) for dep in deps]) + def _svelte(ctx): args = ctx.actions.args() args.use_param_file("@%s", use_always = True) @@ -16,11 +27,13 @@ def _svelte(ctx): args.add(ctx.var["GENDIR"]) args.add_all(ctx.files._shims) + deps = _get_sources(ctx.attr.deps).to_list() + ctx.actions.run( execution_requirements = {"supports-workers": "1"}, executable = ctx.executable._svelte_bin, outputs = [ctx.outputs.mjs, ctx.outputs.dts, ctx.outputs.css], - inputs = [ctx.file.entry_point] + ctx.files._shims, + inputs = [ctx.file.entry_point] + deps + ctx.files._shims, mnemonic = "Svelte", arguments = [args], ) @@ -33,6 +46,7 @@ svelte = rule( implementation = _svelte, attrs = { "entry_point": attr.label(allow_single_file = True), + "deps": attr.label_list(), "_svelte_bin": attr.label( default = Label("//ts/svelte:svelte_bin"), executable = True, @@ -50,13 +64,14 @@ svelte = rule( }, ) -def compile_svelte(name = "svelte", srcs = None, visibility = ["//visibility:private"]): +def compile_svelte(name = "svelte", srcs = None, deps = [], visibility = ["//visibility:private"]): if not srcs: srcs = native.glob(["*.svelte"]) for src in srcs: svelte( name = src.replace(".svelte", ""), entry_point = src, + deps = deps, visibility = visibility, )