Added BUILD file for gui2-fw-lib bazel build
This is another step along the way of having Native Bazel builds for Angular
Not fully there yet - waiting for Angular v9 in next 2 weeks
but don't want to wait that long to merge all of this
For most people the main concern is updates to WORKSPACE
Change-Id: I28170b8f8daaa2959327c259fe6a10df075113bb
diff --git a/web/gui2-fw-lib/src/noBUILD.bazel b/web/gui2-fw-lib/src/noBUILD.bazel
new file mode 100644
index 0000000..398c403
--- /dev/null
+++ b/web/gui2-fw-lib/src/noBUILD.bazel
@@ -0,0 +1,168 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@npm_angular_bazel//:index.bzl", "ng_module")
+load("@npm_bazel_karma//:index.bzl", "ts_web_test_suite")
+load("@build_bazel_rules_nodejs//:defs.bzl", "history_server", "rollup_bundle")
+load("@build_bazel_rules_nodejs//internal/web_package:web_package.bzl", "web_package")
+load("@npm_bazel_typescript//:index.bzl", "ts_devserver", "ts_library")
+load("@io_bazel_rules_sass//:defs.bzl", "multi_sass_binary", "sass_binary")
+
+sass_binary(
+ name = "global_stylesheet",
+ src = glob([
+ "styles.css",
+ "styles.scss",
+ ])[0],
+ output_name = "global_stylesheet.css",
+)
+
+multi_sass_binary(
+ name = "styles",
+ srcs = glob(
+ include = ["**/*.scss"],
+ exclude = ["styles.scss"],
+ ),
+)
+
+ng_module(
+ name = "src",
+ srcs = glob(
+ include = ["**/*.ts"],
+ exclude = [
+ "**/*.spec.ts",
+ "main.ts",
+ "test.ts",
+ "initialize_testbed.ts",
+ ],
+ ),
+ assets = glob([
+ "**/*.css",
+ "**/*.html",
+ ]) + ([":styles"] if len(glob(["**/*.scss"])) else []),
+ tsconfig = "tsconfig.app.json",
+ deps = [
+ "//web/gui2-fw-lib/projects/gui2-fw-lib",
+ "@npm//@angular/animations",
+ "@npm//@angular/core",
+ "@npm//@angular/platform-browser",
+ "@npm//@angular/router",
+ "@npm//@types",
+ "@npm//rxjs",
+ ],
+)
+
+rollup_bundle(
+ name = "bundle",
+ entry_point = ":main.prod.ts",
+ deps = [
+ "//src",
+ "@npm//@angular/router",
+ "@npm//rxjs",
+ ],
+)
+
+web_package(
+ name = "prodapp",
+ assets = [
+ # do not sort
+ "@npm//:node_modules/zone.js/dist/zone.min.js",
+ ":bundle.min.js",
+ ":global_stylesheet",
+ ],
+ data = [
+ "favicon.ico",
+ ],
+ index_html = "index.html",
+)
+
+history_server(
+ name = "prodserver",
+ data = [":prodapp"],
+ templated_args = ["src/prodapp"],
+)
+
+filegroup(
+ name = "rxjs_umd_modules",
+ srcs = [
+ # do not sort
+ "@npm//:node_modules/rxjs/bundles/rxjs.umd.js",
+ ":rxjs_shims.js",
+ ],
+)
+
+genrule(
+ name = "d3-copy",
+ srcs = ["@npm//:node_modules/d3/dist/d3.js"],
+ outs = ["d3.js"],
+ cmd = "cp $< $@",
+ output_to_bindir = 1,
+)
+
+ts_devserver(
+ name = "devserver",
+ data = [
+ "favicon.ico",
+ ],
+ entry_module = "org_onosproject_onos/web/gui2-fw-lib/src/main.dev",
+ index_html = "index.html",
+ port = 4200,
+ scripts = [
+ "@npm//:node_modules/tslib/tslib.js",
+ ":rxjs_umd_modules",
+ ],
+ serving_path = "/bundle.min.js",
+ static_files = [
+ "@npm//:node_modules/zone.js/dist/zone.min.js",
+ ":global_stylesheet",
+ ":d3-copy",
+ ],
+ deps = [":src"],
+)
+
+ts_library(
+ name = "test_lib",
+ testonly = 1,
+ srcs = glob(["**/*.spec.ts"]),
+ deps = [
+ ":src",
+ "@npm//@angular/core",
+ "@npm//@angular/router",
+ "@npm//@types",
+ ],
+)
+
+ts_library(
+ name = "initialize_testbed",
+ testonly = 1,
+ srcs = [
+ "initialize_testbed.ts",
+ ],
+ deps = [
+ "@npm//@angular/core",
+ "@npm//@angular/platform-browser-dynamic",
+ "@npm//@types",
+ ],
+)
+
+ts_web_test_suite(
+ name = "test",
+ srcs = [
+ "@npm//:node_modules/tslib/tslib.js",
+ ],
+ # do not sort
+ bootstrap = [
+ "@npm//:node_modules/zone.js/dist/zone-testing-bundle.js",
+ "@npm//:node_modules/reflect-metadata/Reflect.js",
+ ],
+ browsers = [
+ "@io_bazel_rules_webtesting//browsers:chromium-local",
+ ],
+ runtime_deps = [
+ ":initialize_testbed",
+ ],
+ deps = [
+ ":rxjs_umd_modules",
+ ":test_lib",
+ "@npm//karma-jasmine",
+ ],
+)