| load("@aspect_rules_ts//ts:defs.bzl", "ts_config") |
| load("@bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") |
| load("@bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory") |
| load("@bazel_lib//lib:run_binary.bzl", "run_binary") |
| load("@bazel_skylib//lib:selects.bzl", "selects") |
| load("@jq.bzl//jq:jq.bzl", "jq_test") |
| load("@npm//:defs.bzl", "npm_link_all_packages") |
| load("@npm//:renovate/package_json.bzl", renovate_bin = "bin") |
| load("@npm//:web-ext/package_json.bzl", web_ext_bin = "bin") |
| load("@npm//:json5/package_json.bzl", json5_bin = "bin") |
| load("@rules_pkg//pkg:pkg.bzl", "pkg_zip") |
| load("@rules_shell//shell:sh_test.bzl", "sh_test") |
| load("//tools:bazel/swc.bzl", "swc_pkg") |
| load(":bzl/bundle.bzl", "extension_bundle") |
| load(":bzl/config.bzl", "browser", "channel", "release") |
| load(":bzl/copy_pkg.bzl", "copy_extension_package_to_directory") |
| load(":bzl/lit_localize.bzl", "expand_lit_localize_config_templates") |
| |
| npm_link_all_packages() |
| |
| exports_files([ |
| ".swcrc_pkg", |
| ".swcrc_pkg_strict", |
| ]) |
| |
| extension_bundle( |
| name = "webpack_bundle", |
| ) |
| |
| copy_to_directory( |
| name = "cc_dark_theme_styles", |
| srcs = ["//src/features/ccDarkTheme/ui/styles"], |
| replace_prefixes = { |
| "src/features/ccDarkTheme/ui/styles": "", |
| }, |
| ) |
| |
| copy_to_directory( |
| name = "options_styles", |
| srcs = ["//src/options/ui/styles"], |
| replace_prefixes = { |
| "src/options/ui/styles": "", |
| }, |
| ) |
| |
| copy_extension_package_to_directory( |
| name = "unpacked_pkg", |
| out = "unpacked_pkg", |
| webpack_bundle = ":webpack_bundle", |
| ) |
| |
| pkg_zip( |
| name = "pkg_zip", |
| srcs = [":unpacked_pkg"], |
| out = "twpowertools.zip", |
| strip_prefix = "unpacked_pkg", |
| visibility = ["//visibility:public"], |
| ) |
| |
| ts_config( |
| name = "tsconfig_base", |
| src = "tsconfig.base.json", |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| copy_to_bin( |
| name = "vitest_config", |
| srcs = ["vitest.config.ts"], |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| browser( |
| name = "browser", |
| build_setting_default = "CHROMIUM", |
| ) |
| |
| config_setting( |
| name = "chromium", |
| flag_values = { |
| ":browser": "CHROMIUM", |
| }, |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| config_setting( |
| name = "gecko", |
| flag_values = { |
| ":browser": "GECKO", |
| }, |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| selects.config_setting_group( |
| name = "mv3", |
| match_any = [ |
| ":chromium", |
| ], |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| channel( |
| name = "channel", |
| build_setting_default = "STABLE", |
| ) |
| |
| config_setting( |
| name = "stable", |
| flag_values = { |
| ":channel": "STABLE", |
| }, |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| config_setting( |
| name = "beta", |
| flag_values = { |
| ":channel": "BETA", |
| }, |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| config_setting( |
| name = "canary", |
| flag_values = { |
| ":channel": "CANARY", |
| }, |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| release( |
| name = "release", |
| build_setting_default = False, |
| ) |
| |
| config_setting( |
| name = "is_release", |
| flag_values = { |
| ":release": "true", |
| }, |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| config_setting( |
| name = "production", |
| values = { |
| "compilation_mode": "opt", |
| }, |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| config_setting( |
| name = "should_web_ext_lint", |
| flag_values = { |
| ":browser": "GECKO", |
| }, |
| values = { |
| "compilation_mode": "opt", |
| }, |
| ) |
| |
| web_ext_bin.web_ext_binary( |
| name = "web_ext", |
| ) |
| |
| sh_test( |
| name = "web_ext_lint", |
| size = "small", |
| srcs = [":web_ext_lint.sh"], |
| args = ["$(location :web_ext)"], |
| data = [ |
| ":unpacked_pkg", |
| ":web_ext", |
| ], |
| env = { |
| "NO_UPDATE_NOTIFIER": "true", |
| }, |
| target_compatible_with = select({ |
| "//:should_web_ext_lint": [], |
| "//conditions:default": ["//tools/platforms:incompatible"], |
| }), |
| deps = [ |
| "@rules_shell//shell/runfiles", |
| ], |
| ) |
| |
| renovate_bin.renovate_config_validator_test( |
| name = "renovate_config_test", |
| size = "small", |
| data = [":renovate.json"], |
| ) |
| |
| expand_lit_localize_config_templates() |
| |
| run_binary( |
| name = "version_name", |
| outs = ["VERSION_NAME"], |
| args = select({ |
| "//:stable": ["stable"], |
| "//:beta": ["beta"], |
| "//:canary": ["canary"], |
| }) + select({ |
| "//:chromium": ["chromium_mv3"], |
| "//:gecko": ["gecko"], |
| }) + [ |
| "$(execpath VERSION_NAME)", |
| ], |
| stamp = -1, |
| tool = "//tools/stampVersionName", |
| ) |
| |
| # NOTE: When changing a tsconfig file, make sure to change the corresponding |
| # swcrc file! |
| |
| # This doesn't provide strong typing guarantees which can lead to bugs. |
| # Please consider using //:tsconfig_pkg_strict instead. |
| ts_config( |
| name = "tsconfig_pkg", |
| src = "tsconfig.pkg.json", |
| visibility = ["//:__subpackages__"], |
| deps = [":tsconfig_base"], |
| ) |
| |
| ts_config( |
| name = "tsconfig_pkg_strict", |
| src = "tsconfig.pkg_strict.json", |
| visibility = ["//:__subpackages__"], |
| deps = [":tsconfig_base"], |
| ) |
| |
| ts_config( |
| name = "tsconfig_pkg_js", |
| src = "tsconfig.pkg_js.json", |
| visibility = ["//:__subpackages__"], |
| deps = [":tsconfig_base"], |
| ) |
| |
| # See https://github.com/aspect-build/rules_swc/blob/f35b63d621f6ff7cd7ca194a1061f7cdd59af07e/docs/tsconfig.md#maintain-two-files |
| |
| json5_bin.json5( |
| name = "tsconfig_pkg_json_without_comments", |
| srcs = ["tsconfig.pkg.json"], |
| outs = ["tsconfig.pkg.json_without_comments"], |
| args = ["tsconfig.pkg.json -o tsconfig.pkg.json_without_comments"], |
| ) |
| |
| jq_test( |
| name = "ensure_swcrc_pkg_is_synced_test", |
| file1 = ":tsconfig_pkg_json_without_comments", |
| file2 = ".swcrc_pkg", |
| filter1 = ".compilerOptions.paths", |
| filter2 = ".jsc.paths", |
| ) |
| |
| json5_bin.json5( |
| name = "tsconfig_pkg_strict_json_without_comments", |
| srcs = ["tsconfig.pkg_strict.json"], |
| outs = ["tsconfig.pkg_strict.json_without_comments"], |
| args = ["tsconfig.pkg_strict.json -o tsconfig.pkg_strict.json_without_comments"], |
| ) |
| |
| jq_test( |
| name = "ensure_swcrc_pkg_strict_is_synced_test", |
| file1 = ":tsconfig_pkg_strict_json_without_comments", |
| file2 = ".swcrc_pkg_strict", |
| filter1 = ".compilerOptions.paths", |
| filter2 = ".jsc.paths", |
| ) |