load("//:packages.bzl", "link_packages") load("@aio_npm//@angular/build-tooling/bazel/remote-execution:index.bzl", "ENABLE_NETWORK") load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin") load("@npm//@angular-devkit/architect-cli:index.bzl", "architect", "architect_test") package(default_visibility = ["//visibility:public"]) # All source and configuration files required to build the docs app APPLICATION_FILES = [ "angular.json", "tsconfig.app.json", "tsconfig.json", "tsconfig.worker.json", ] + glob( ["src/**/*"], exclude = [ "src/**/*.spec.ts", # Temporarily exclude generated sources produced by the non-bazel # build until the whole project is built by bazel and this directory # isn't needed. "src/generated/**/*", ], ) TEST_FILES = APPLICATION_FILES + [ "karma.conf.js", "tsconfig.spec.json", ] + glob( ["**/*.spec.ts"], ) APPLICATION_DEPS = link_packages([ "@npm//@angular-devkit/build-angular", "@npm//@angular/animations", "@npm//@angular/cdk", "@npm//@angular/common", "@npm//@angular/compiler", "@npm//@angular/compiler-cli", "@npm//@angular/core", "@npm//@angular/docs", "@npm//@angular/forms", "@npm//@angular/material", "@npm//@angular/platform-browser", "@npm//@angular/platform-server", "@npm//@angular/router", "@npm//gsap", "@npm//marked", "@npm//ngx-progressbar", "@npm//ogl", "@npm//rxjs", "@npm//typescript", "//adev/src/assets/images", "//adev/src/assets/textures", "//adev/src/assets/previews", "//adev/src/assets:tutorials", "//adev/src/assets/icons", "//adev/src/assets:api", "//adev/src/assets:content", "@npm//@typescript/vfs", "@npm//@codemirror/state", "@npm//@codemirror/view", "@npm//@codemirror/language", "@npm//@codemirror/commands", "@npm//@codemirror/search", "@npm//@codemirror/autocomplete", "@npm//@codemirror/lint", "@npm//@codemirror/lang-html", "@npm//@codemirror/lang-angular", "@npm//@codemirror/lang-css", "@npm//@codemirror/lang-sass", "@npm//@codemirror/lang-javascript", "@npm//@lezer/highlight", "@npm//@lezer/javascript", "@npm//@lezer/common", "@npm//xterm", "@npm//xterm-addon-fit", "@npm//angular-split", ]) TEST_DEPS = APPLICATION_DEPS + link_packages([ "@npm//@angular/platform-browser-dynamic", "@npm//@angular/build-tooling/bazel/browsers/chromium", "@npm//@types/jasmine", "@npm//@types/node", "@npm//assert", "@npm//jasmine", "@npm//jasmine-core", "@npm//karma-chrome-launcher", "@npm//karma-coverage", "@npm//karma-jasmine", "@npm//karma-jasmine-html-reporter", "//aio/tools:windows-chromium-path", ]) copy_to_bin( name = "application_files_bin", srcs = APPLICATION_FILES, ) bool_flag( name = "fast_build_mode", build_setting_default = False, ) config_setting( name = "fast", flag_values = { ":fast_build_mode": "true", }, ) config_setting( name = "full", flag_values = { ":fast_build_mode": "false", }, ) config_based_architect_flags = select({ ":fast": ["--no-prerender"], ":full": ["--prerender"], }) architect( name = "build", args = [ "angular-dev:build", "--output-path=build", ] + config_based_architect_flags, chdir = "$(RULEDIR)", data = APPLICATION_DEPS + [ ":application_files_bin", ], # Network is required to inline fonts. exec_properties = ENABLE_NETWORK, output_dir = True, tags = [ "no-remote-exec", ], ) architect( name = "serve", args = [ "angular-dev:serve", "--poll=1000", "--live-reload", "--watch", ], chdir = package_name(), data = APPLICATION_DEPS + [ ":application_files_bin", ], tags = [ "no-remote-exec", ], ) architect_test( name = "test", args = [ "angular-dev:test", "--no-watch", ], chdir = package_name(), data = TEST_DEPS + TEST_FILES, env = { "CHROME_BIN": "../$(CHROMIUM)", }, toolchains = [ "@npm//@angular/build-tooling/bazel/browsers/chromium:toolchain_alias", ], )