Files
wails_tools/wails/private/build_assets.bzl
2026-03-12 18:58:43 +01:00

59 lines
2.1 KiB
Python

"""Rule for generating Wails build assets."""
load(":private/common.bzl", "write_manifest")
def _wails_build_assets_impl(ctx):
toolchain = ctx.toolchains["//wails:toolchain_type"].wails
out_dir = ctx.actions.declare_directory(ctx.label.name)
manifest = write_manifest(ctx, ctx.label.name + ".manifest", ctx.files.srcs, ctx.attr.strip_prefix)
args = ctx.actions.args()
args.add("--app-name", ctx.attr.app_name)
args.add("--binary-name", ctx.attr.binary_name)
args.add("--config-file", ctx.attr.config_file)
args.add("--manifest", manifest.path)
args.add("--out", out_dir.path)
args.add("--wails", toolchain.executable.path)
if ctx.attr.macos_minimum_system_version:
args.add("--macos-minimum-system-version", ctx.attr.macos_minimum_system_version)
ctx.actions.run(
executable = ctx.executable._tool,
arguments = [args],
inputs = depset(ctx.files.srcs + [manifest, toolchain.go_executable]),
outputs = [out_dir],
tools = [
ctx.executable._tool,
toolchain.files_to_run,
],
env = {
"GO_BIN": toolchain.go_executable.path,
},
mnemonic = "WailsBuildAssets",
progress_message = "Generating Wails build assets for %s" % ctx.label,
)
return [DefaultInfo(files = depset([out_dir]))]
wails_build_assets = rule(
implementation = _wails_build_assets_impl,
doc = "Runs `wails update build-assets` in a staged build directory.",
attrs = {
"app_name": attr.string(mandatory = True),
"binary_name": attr.string(mandatory = True),
"config_file": attr.string(default = "config.yml"),
"macos_minimum_system_version": attr.string(default = ""),
"srcs": attr.label_list(
mandatory = True,
allow_files = True,
),
"strip_prefix": attr.string(default = ""),
"_tool": attr.label(
default = "//wails/tools:build_assets_action",
cfg = "exec",
executable = True,
),
},
toolchains = ["//wails:toolchain_type"],
)