From 3be9f784d2c5319891462c04534383ec0ca72ed2 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Wed, 10 Feb 2021 09:59:44 -0700 Subject: [PATCH 1/3] Add proto language rules --- .bazelversion | 1 + BUILD.bazel | 11 +++ WORKSPACE | 84 ++++++++++++----- language/grpc_js/BUILD.bazel | 60 ++++++++++++ .../grpc_js/grpc_js_grpc_compile/BUILD.bazel | 55 +++++++++++ ...pile_info_provider_test.golden.1.prototext | 58 ++++++++++++ .../grpc_js/grpc_js_grpc_library/BUILD.bazel | 57 ++++++++++++ .../grpc_js_grpc_library.bzl.tmpl | 91 +++++++++++++++++++ ...rary_info_provider_test.golden.1.prototext | 68 ++++++++++++++ ...c_js_info_provider_test.golden.1.prototext | 18 ++++ plugins/grpc_js/BUILD.bazel | 8 ++ plugins/grpc_js/grpc/BUILD.bazel | 17 ++++ rules/BUILD.bazel | 8 ++ rules/grpc_js.bzl | 6 ++ rules/grpc_js_grpc_compile.bzl | 18 ++++ rules/grpc_js_grpc_compile_deps.bzl | 66 ++++++++++++++ rules/grpc_js_grpc_library.bzl | 91 +++++++++++++++++++ rules/grpc_js_grpc_library_deps.bzl | 77 ++++++++++++++++ 18 files changed, 769 insertions(+), 25 deletions(-) create mode 100644 .bazelversion create mode 100644 language/grpc_js/BUILD.bazel create mode 100644 language/grpc_js/grpc_js_grpc_compile/BUILD.bazel create mode 100644 language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext create mode 100644 language/grpc_js/grpc_js_grpc_library/BUILD.bazel create mode 100644 language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl create mode 100644 language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext create mode 100644 language/grpc_js/grpc_js_info_provider_test.golden.1.prototext create mode 100644 plugins/grpc_js/BUILD.bazel create mode 100644 plugins/grpc_js/grpc/BUILD.bazel create mode 100644 rules/BUILD.bazel create mode 100644 rules/grpc_js.bzl create mode 100644 rules/grpc_js_grpc_compile.bzl create mode 100644 rules/grpc_js_grpc_compile_deps.bzl create mode 100644 rules/grpc_js_grpc_library.bzl create mode 100644 rules/grpc_js_grpc_library_deps.bzl diff --git a/.bazelversion b/.bazelversion new file mode 100644 index 0000000..fcdb2e1 --- /dev/null +++ b/.bazelversion @@ -0,0 +1 @@ +4.0.0 diff --git a/BUILD.bazel b/BUILD.bazel index e69de29..2088bda 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -0,0 +1,11 @@ +filegroup( + name = "all_files", + testonly = True, + srcs = [ + "BUILD.bazel", + "WORKSPACE", + "//plugins/grpc_js/grpc:all_files", + "//rules:all_files", + ] + glob(["*.bzl"]), + visibility = ["//visibility:public"], +) diff --git a/WORKSPACE b/WORKSPACE index dd6afc4..38bd395 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,37 +1,71 @@ workspace(name = "com_github_stackb_grpc_js") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +local_repository( + name = "build_stack_rules_proto", + path = "../rules_proto", +) -http_archive( - name = "bazel_skylib", - sha256 = "bbccf674aa441c266df9894182d80de104cabd19be98be002f6d478aaa31574d", - strip_prefix = "bazel-skylib-2169ae1c374aab4a09aa90e65efe1a3aad4e279b", - urls = ["https://github.com/bazelbuild/bazel-skylib/archive/2169ae1c374aab4a09aa90e65efe1a3aad4e279b.tar.gz"], +load( + "@build_stack_rules_proto//:deps.bzl", + "bazel_gazelle", + "bazel_skylib", + "com_github_grpc_grpc", + "com_google_protobuf", + "io_bazel_rules_closure", + "io_bazel_rules_go", + "zlib", ) -# ================================================================ +# ================================================== +# Go +# ================================================== +# +io_bazel_rules_go() -RULES_CLOSURE_VERSION = "50d3dc9e6d27a5577a0f95708466718825d579f4" +bazel_gazelle() -http_archive( - name = "io_bazel_rules_closure", - url = "https://github.com/bazelbuild/rules_closure/archive/%s.zip" % RULES_CLOSURE_VERSION, - strip_prefix = "rules_closure-%s" % RULES_CLOSURE_VERSION, -) +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") -http_archive( - name = "net_zlib", - build_file = "@io_bazel_rules_closure//:third_party/zlib.BUILD", - sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", - strip_prefix = "zlib-1.2.11", - urls = ["https://zlib.net/zlib-1.2.11.tar.gz"], -) +go_rules_dependencies() + +go_register_toolchains() + +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") + +gazelle_dependencies() + +# ================================================== +# closure +# ================================================== +# +io_bazel_rules_closure() -bind( - name = "zlib", - actual = "@net_zlib//:zlib", +load("@io_bazel_rules_closure//closure:repositories.bzl", "rules_closure_dependencies", "rules_closure_toolchains") + +rules_closure_dependencies( + omit_bazel_skylib = True, + omit_com_google_protobuf = True, + omit_zlib = True, ) -load("@io_bazel_rules_closure//closure:defs.bzl", "closure_repositories") +rules_closure_toolchains() + +# ================================================== +# Protobuf +# ================================================== +# +com_google_protobuf() + +bazel_skylib() + +zlib() + +# ================================================== +# gRPC +# ================================================== +# +com_github_grpc_grpc() + +load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps") -closure_repositories() +grpc_deps() diff --git a/language/grpc_js/BUILD.bazel b/language/grpc_js/BUILD.bazel new file mode 100644 index 0000000..3851fe7 --- /dev/null +++ b/language/grpc_js/BUILD.bazel @@ -0,0 +1,60 @@ +load( + "@build_stack_rules_proto//language/rules:proto_language_info_provider_test.bzl", + "proto_language_info_provider_test", +) +load( + "@build_stack_rules_proto//language/rules:proto_language_test.bzl", + "proto_language_test", +) +load( + "@build_stack_rules_proto//language/rules:proto_language.bzl", + "proto_language", +) +load( + "@build_stack_rules_proto//rules:proto_dependency.bzl", + "proto_dependency", +) + +proto_language( + name = "grpc_js", + avatar_url = "https://user-images.githubusercontent.com/50580/78734761-54effc80-7906-11ea-8f5e-42725718f419.png", + display_name = "grpc.js", + package = "rules", + prefix = "grpc_js", + rules = [ + "grpc_js_grpc_compile", + "grpc_js_grpc_library", + ], + visibility = ["//visibility:public"], +) + +proto_language_info_provider_test( + name = "grpc_js_info_provider_test", + srcs = ["grpc_js_info_provider_test.golden.1.prototext"], + deps = [":grpc_js"], +) + +proto_language_test( + name = "grpc_js_language_test", + srcs = ["//rules:grpc_js.bzl"], + package = "rules", + deps = [":grpc_js"], +) + +# Branch: master +# Commit: beb6ac3b43247816c1a1ebf741ebf0c98203414a +# Date: 2021-02-09 22:02:48 +0000 UTC +# URL: https://github.com/stackb/grpc.js/commit/beb6ac3b43247816c1a1ebf741ebf0c98203414a +# +# Fix dangling build link (#7) +# +# * Fix dangling build ref +# Size: 30483 (30 kB) +proto_dependency( + name = "com_github_stackb_grpc_js", + repository_rule = "http_archive", + sha256 = "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596", + strip_prefix = "grpc.js-beb6ac3b43247816c1a1ebf741ebf0c98203414a", + urls = ["https://github.com/stackb/grpc.js/archive/beb6ac3b43247816c1a1ebf741ebf0c98203414a.tar.gz"], + visibility = ["//visibility:public"], +) diff --git a/language/grpc_js/grpc_js_grpc_compile/BUILD.bazel b/language/grpc_js/grpc_js_grpc_compile/BUILD.bazel new file mode 100644 index 0000000..c9c0853 --- /dev/null +++ b/language/grpc_js/grpc_js_grpc_compile/BUILD.bazel @@ -0,0 +1,55 @@ +load( + "@build_stack_rules_proto//language/rules:proto_rule_info_provider_test.bzl", + "proto_rule_info_provider_test", +) +load( + "@build_stack_rules_proto//language/rules:proto_rule_test.bzl", + "proto_rule_test", +) +load( + "@build_stack_rules_proto//language/rules:proto_rule_bazel_test.bzl", + "proto_rule_bazel_test", +) +load( + "@build_stack_rules_proto//language/rules:proto_rule.bzl", + "proto_rule", +) + +proto_rule( + name = "grpc_js_grpc_compile", + build_example_tmpl = "@build_stack_rules_proto//core/grpc:BUILD.tmpl", + kind = "grpc", + language = "//language/grpc_js", + package = "rules", + plugins = [ + "@build_stack_rules_proto//plugins/closure/proto", + "//plugins/grpc_js/grpc", + ], + visibility = ["//visibility:public"], + deps = [ + "//language/grpc_js:com_github_stackb_grpc_js", + "@build_stack_rules_proto//core:com_google_protobuf", + ], +) + +proto_rule_info_provider_test( + name = "grpc_js_grpc_compile_info_provider_test", + srcs = ["grpc_js_grpc_compile_info_provider_test.golden.1.prototext"], + deps = [":grpc_js_grpc_compile"], +) + +proto_rule_test( + name = "grpc_js_grpc_compile_rule_test", + srcs = [ + "//rules:grpc_js_grpc_compile.bzl", + "//rules:grpc_js_grpc_compile_deps.bzl", + ], + package = "rules", + deps = [":grpc_js_grpc_compile"], +) + +proto_rule_bazel_test( + name = "grpc_js_grpc_compile_rule_bazel_test", + tags = ["exclusive"], + deps = ["grpc_js_grpc_compile"], +) diff --git a/language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext b/language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext new file mode 100644 index 0000000..b191dc6 --- /dev/null +++ b/language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext @@ -0,0 +1,58 @@ +bazel_test_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_bazel_test.go" +build_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile.BUILD" +bzl_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile.bzl" +deps { + buildFile: "" + label: "@build_stack_rules_proto//core:bazel_skylib" + name: "bazel_skylib" + repositoryRule: "http_archive" + sha256: "ebdf850bfef28d923a2cc67ddca86355a449b5e4f38b0a70e584dc24e5984aa6" + stripPrefix: "bazel-skylib-f80bc733d4b9f83d427ce3442be2e07427b2cc8d" + urls: "https://github.com/bazelbuild/bazel-skylib/archive/f80bc733d4b9f83d427ce3442be2e07427b2cc8d.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "" + label: "@build_stack_rules_proto//core:rules_python" + name: "rules_python" + repositoryRule: "http_archive" + sha256: "8cc0ad31c8fc699a49ad31628273529ef8929ded0a0859a3d841ce711a9a90d5" + stripPrefix: "rules_python-c7e068d38e2fec1d899e1c150e372f205c220e27" + urls: "https://github.com/bazelbuild/rules_python/archive/c7e068d38e2fec1d899e1c150e372f205c220e27.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "@build_stack_rules_proto//third_party:BUILD.bazel.zlib" + label: "@build_stack_rules_proto//core:zlib" + name: "zlib" + repositoryRule: "http_archive" + sha256: "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1" + stripPrefix: "zlib-1.2.11" + urls: "https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz" + urls: "https://zlib.net/zlib-1.2.11.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "" + label: "//language/grpc_js:com_github_stackb_grpc_js" + name: "com_github_stackb_grpc_js" + repositoryRule: "http_archive" + sha256: "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596" + stripPrefix: "grpc.js-beb6ac3b43247816c1a1ebf741ebf0c98203414a" + urls: "https://github.com/stackb/grpc.js/archive/beb6ac3b43247816c1a1ebf741ebf0c98203414a.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "" + label: "@build_stack_rules_proto//core:com_google_protobuf" + name: "com_google_protobuf" + repositoryRule: "http_archive" + sha256: "d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113" + stripPrefix: "protobuf-3.14.0" + urls: "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz" + workspaceSnippet: "" +} +deps_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_deps.bzl" +json_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile.json" +name: "grpc_js_grpc_compile" +workspace_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile.WORKSPACE" diff --git a/language/grpc_js/grpc_js_grpc_library/BUILD.bazel b/language/grpc_js/grpc_js_grpc_library/BUILD.bazel new file mode 100644 index 0000000..94aef75 --- /dev/null +++ b/language/grpc_js/grpc_js_grpc_library/BUILD.bazel @@ -0,0 +1,57 @@ +load( + "@build_stack_rules_proto//language/rules:proto_rule_info_provider_test.bzl", + "proto_rule_info_provider_test", +) +load( + "@build_stack_rules_proto//language/rules:proto_rule_test.bzl", + "proto_rule_test", +) +load( + "@build_stack_rules_proto//language/rules:proto_rule_bazel_test.bzl", + "proto_rule_bazel_test", +) +load( + "@build_stack_rules_proto//language/rules:proto_rule.bzl", + "proto_rule", +) + +proto_rule( + name = "grpc_js_grpc_library", + build_example_tmpl = "@build_stack_rules_proto//core/grpc:BUILD.tmpl", + implementation_tmpl = "grpc_js_grpc_library.bzl.tmpl", + kind = "grpc", + language = "//language/grpc_js", + package = "rules", + plugins = [ + "@build_stack_rules_proto//plugins/closure/proto", + "//plugins/grpc_js/grpc", + ], + visibility = ["//visibility:public"], + deps = [ + "//language/grpc_js:com_github_stackb_grpc_js", + "@build_stack_rules_proto//core:com_google_protobuf", + "@build_stack_rules_proto//language/closure:io_bazel_rules_closure", + ], +) + +proto_rule_info_provider_test( + name = "grpc_js_grpc_library_info_provider_test", + srcs = ["grpc_js_grpc_library_info_provider_test.golden.1.prototext"], + deps = [":grpc_js_grpc_library"], +) + +proto_rule_test( + name = "grpc_js_grpc_library_rule_test", + srcs = [ + "//rules:grpc_js_grpc_library.bzl", + "//rules:grpc_js_grpc_library_deps.bzl", + ], + package = "rules", + deps = [":grpc_js_grpc_library"], +) + +proto_rule_bazel_test( + name = "grpc_js_grpc_library_rule_bazel_test", + tags = ["exclusive"], + deps = ["grpc_js_grpc_library"], +) diff --git a/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl b/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl new file mode 100644 index 0000000..a631637 --- /dev/null +++ b/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl @@ -0,0 +1,91 @@ +load( + "@build_stack_rules_proto//{{ .Rule.Package }}:{{ .Rule.Language.Prefix }}_{{ .Rule.Kind }}_compile.bzl", + "{{ .Rule.Language.Prefix }}_{{ .Rule.Kind }}_compile", +) + +load("@build_stack_rules_proto//rules:closure.bzl", "closure_proto_compile") + +load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library") + +PROTO_DEPS = ["@io_bazel_rules_closure//closure/protobuf:jspb"] + +def {{ .Rule.Name }}(**kwargs): + + name = kwargs.get("name") + name_pb = name + "_pb" + name_pb_lib = name + "_pb_lib" + name_pb_grpc = name + "_pb_grpc" + + closure_deps = kwargs.pop("closure_deps", []) + deps = kwargs.get("deps", []) + verbose = kwargs.pop("verbose", 0) + visibility = kwargs.get("visibility", []) + tags = kwargs.get("tags", []) + + closure_proto_compile( + name = name_pb, + deps = deps, + visibility = visibility, + verbose = verbose, + tags = tags, + ) + + {{ .Rule.Language.Prefix }}_{{ .Rule.Kind }}_compile( + name = name_pb_grpc, + deps = deps, + visibility = visibility, + verbose = verbose, + tags = tags, + ) + + closure_js_library( + name = name_pb_lib, + srcs = [name_pb], + deps = [ + "@io_bazel_rules_closure//closure/protobuf:jspb", + ] + closure_deps, + internal_descriptors = [ + name_pb + "/descriptor.source.bin", + ], + suppress = [ + "JSC_LATE_PROVIDE_ERROR", + "JSC_UNDEFINED_VARIABLE", + "JSC_IMPLICITLY_NULLABLE_JSDOC", + "JSC_STRICT_INEXISTENT_PROPERTY", + "JSC_POSSIBLE_INEXISTENT_PROPERTY", + "JSC_UNRECOGNIZED_TYPE_ERROR", + # "stricterMissingRequireType", + # "analyzerChecks", + # "analyzerChecksInternal", + ], + tags = tags, + visibility = visibility, + ) + + closure_js_library( + name = name, + srcs = [name_pb_grpc], + deps = [ + name_pb_lib, + "@io_bazel_rules_closure//closure/library/promise", + "@com_github_stackb_grpc_js//js/grpc/stream/observer:call", + "@com_github_stackb_grpc_js//js/grpc", + "@com_github_stackb_grpc_js//js/grpc:api", + "@com_github_stackb_grpc_js//js/grpc:options", + ] + closure_deps, + internal_descriptors = [ + name_pb + "/descriptor.source.bin", + name_pb_grpc + "/descriptor.source.bin", + ], + exports = [ + name_pb_lib, + ], + suppress = [ + "JSC_IMPLICITLY_NULLABLE_JSDOC", + # "stricterMissingRequireType", + # "analyzerChecks", + # "analyzerChecksInternal", + ], + tags = tags, + visibility = visibility, + ) \ No newline at end of file diff --git a/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext b/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext new file mode 100644 index 0000000..bd37f29 --- /dev/null +++ b/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext @@ -0,0 +1,68 @@ +bazel_test_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_bazel_test.go" +build_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.BUILD" +bzl_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.bzl" +deps { + buildFile: "" + label: "@build_stack_rules_proto//core:bazel_skylib" + name: "bazel_skylib" + repositoryRule: "http_archive" + sha256: "ebdf850bfef28d923a2cc67ddca86355a449b5e4f38b0a70e584dc24e5984aa6" + stripPrefix: "bazel-skylib-f80bc733d4b9f83d427ce3442be2e07427b2cc8d" + urls: "https://github.com/bazelbuild/bazel-skylib/archive/f80bc733d4b9f83d427ce3442be2e07427b2cc8d.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "" + label: "@build_stack_rules_proto//core:rules_python" + name: "rules_python" + repositoryRule: "http_archive" + sha256: "8cc0ad31c8fc699a49ad31628273529ef8929ded0a0859a3d841ce711a9a90d5" + stripPrefix: "rules_python-c7e068d38e2fec1d899e1c150e372f205c220e27" + urls: "https://github.com/bazelbuild/rules_python/archive/c7e068d38e2fec1d899e1c150e372f205c220e27.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "@build_stack_rules_proto//third_party:BUILD.bazel.zlib" + label: "@build_stack_rules_proto//core:zlib" + name: "zlib" + repositoryRule: "http_archive" + sha256: "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1" + stripPrefix: "zlib-1.2.11" + urls: "https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz" + urls: "https://zlib.net/zlib-1.2.11.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "" + label: "//language/grpc_js:com_github_stackb_grpc_js" + name: "com_github_stackb_grpc_js" + repositoryRule: "http_archive" + sha256: "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596" + stripPrefix: "grpc.js-beb6ac3b43247816c1a1ebf741ebf0c98203414a" + urls: "https://github.com/stackb/grpc.js/archive/beb6ac3b43247816c1a1ebf741ebf0c98203414a.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "" + label: "@build_stack_rules_proto//core:com_google_protobuf" + name: "com_google_protobuf" + repositoryRule: "http_archive" + sha256: "d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113" + stripPrefix: "protobuf-3.14.0" + urls: "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz" + workspaceSnippet: "" +} +deps { + buildFile: "" + label: "@build_stack_rules_proto//language/closure:io_bazel_rules_closure" + name: "io_bazel_rules_closure" + repositoryRule: "http_archive" + sha256: "4c98a6b8d2d81210f3e291b1c7c5034ab2e22e7870ab3e9603599c79833f7da3" + stripPrefix: "rules_closure-4c99be33856ce1b7b80f55a0e9a8345f559b6ef3" + urls: "https://github.com/bazelbuild/rules_closure/archive/4c99be33856ce1b7b80f55a0e9a8345f559b6ef3.tar.gz" + workspaceSnippet: "load(\"@io_bazel_rules_closure//closure:repositories.bzl\", \"rules_closure_dependencies\", \"rules_closure_toolchains\")\n\nrules_closure_dependencies(\n omit_bazel_skylib = False,\n omit_com_google_protobuf = True,\n omit_zlib = True,\n)\n\nrules_closure_toolchains()" +} +deps_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_deps.bzl" +json_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.json" +name: "grpc_js_grpc_library" +workspace_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.WORKSPACE" diff --git a/language/grpc_js/grpc_js_info_provider_test.golden.1.prototext b/language/grpc_js/grpc_js_info_provider_test.golden.1.prototext new file mode 100644 index 0000000..0f3e3b0 --- /dev/null +++ b/language/grpc_js/grpc_js_info_provider_test.golden.1.prototext @@ -0,0 +1,18 @@ +lang { + avatarUrl: "https://user-images.githubusercontent.com/50580/78734761-54effc80-7906-11ea-8f5e-42725718f419.png" + description: "" + displayName: "grpc.js" + markdownFilename: "bazel-out/{HOST_CONFIGURATION}/bin/language/grpc_js/grpc_js.md" + markdownTmpl: "external/build_stack_rules_proto/language/proto_language.md.tmpl" + name: "grpc_js" + package: "rules" + prefix: "grpc_js" + rules: "grpc_js_grpc_compile" + rules: "grpc_js_grpc_library" + rulesFilename: "bazel-out/{HOST_CONFIGURATION}/bin/language/grpc_js/grpc_js.bzl" + rulesTmpl: "external/build_stack_rules_proto/language/rules.bzl.tmpl" +} +markdown_file: "language/grpc_js/grpc_js.md" +name: "grpc_js" +prefix: "grpc_js" +rules_file: "language/grpc_js/grpc_js.bzl" diff --git a/plugins/grpc_js/BUILD.bazel b/plugins/grpc_js/BUILD.bazel new file mode 100644 index 0000000..62d3642 --- /dev/null +++ b/plugins/grpc_js/BUILD.bazel @@ -0,0 +1,8 @@ +filegroup( + name = "all_files", + testonly = True, + srcs = [ + "//plugins/grpc_js/grpc:all_files", + ], + visibility = ["//visibility:public"], +) diff --git a/plugins/grpc_js/grpc/BUILD.bazel b/plugins/grpc_js/grpc/BUILD.bazel new file mode 100644 index 0000000..1f8c310 --- /dev/null +++ b/plugins/grpc_js/grpc/BUILD.bazel @@ -0,0 +1,17 @@ +load("@build_stack_rules_proto//rules:proto_plugin.bzl", "proto_plugin") + +proto_plugin( + name = "grpc", + exclusions = ["google/protobuf"], # TODO(pcj): is this needed? + outputs = ["{protopath}.grpc.js"], + protoc_plugin_name = "grpc_js", + tool = "@com_github_stackb_grpc_js//protoc-gen-grpc-js", + visibility = ["//visibility:public"], +) + +filegroup( + name = "all_files", + testonly = True, + srcs = glob(["**"]), + visibility = ["//visibility:public"], +) diff --git a/rules/BUILD.bazel b/rules/BUILD.bazel new file mode 100644 index 0000000..8cab6e0 --- /dev/null +++ b/rules/BUILD.bazel @@ -0,0 +1,8 @@ +filegroup( + name = "all_files", + testonly = True, + srcs = glob(["**"]), + visibility = ["//visibility:public"], +) + +exports_files(glob(["*.bzl"])) diff --git a/rules/grpc_js.bzl b/rules/grpc_js.bzl new file mode 100644 index 0000000..df61cbb --- /dev/null +++ b/rules/grpc_js.bzl @@ -0,0 +1,6 @@ +# rules for grpc_js +load("@build_stack_rules_proto//rules:grpc_js_grpc_compile.bzl", _grpc_js_grpc_compile = "grpc_js_grpc_compile") +load("@build_stack_rules_proto//rules:grpc_js_grpc_library.bzl", _grpc_js_grpc_library = "grpc_js_grpc_library") + +grpc_js_grpc_compile = _grpc_js_grpc_compile +grpc_js_grpc_library = _grpc_js_grpc_library diff --git a/rules/grpc_js_grpc_compile.bzl b/rules/grpc_js_grpc_compile.bzl new file mode 100644 index 0000000..55e0343 --- /dev/null +++ b/rules/grpc_js_grpc_compile.bzl @@ -0,0 +1,18 @@ +load( + "@build_stack_rules_proto//rules:proto_aspect.bzl", + "proto_compile_aspect", + "proto_compile_rule_macro", + "proto_compile_rule", +) + +_default_plugins = [ + str(Label("@build_stack_rules_proto//plugins/closure/proto:proto")), + str(Label("//plugins/grpc_js/grpc:grpc")), +] + +_grpc_js_grpc_compile_aspect = proto_compile_aspect(_default_plugins, "grpc_js_grpc_compile_aspect") + +_grpc_js_grpc_compile_rule = proto_compile_rule(_grpc_js_grpc_compile_aspect) + +def grpc_js_grpc_compile(**kwargs): + proto_compile_rule_macro(_grpc_js_grpc_compile_rule, **kwargs) diff --git a/rules/grpc_js_grpc_compile_deps.bzl b/rules/grpc_js_grpc_compile_deps.bzl new file mode 100644 index 0000000..6753af9 --- /dev/null +++ b/rules/grpc_js_grpc_compile_deps.bzl @@ -0,0 +1,66 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") + +def _maybe(repo_rule, name, **kwargs): + if name not in native.existing_rules(): + repo_rule(name = name, **kwargs) + +def grpc_js_grpc_compile_deps(): + bazel_skylib() + rules_python() + zlib() + com_github_stackb_grpc_js() + com_google_protobuf() + + +def bazel_skylib(): + _maybe( + http_archive, + name = "bazel_skylib", + sha256 = "ebdf850bfef28d923a2cc67ddca86355a449b5e4f38b0a70e584dc24e5984aa6", + strip_prefix = "bazel-skylib-f80bc733d4b9f83d427ce3442be2e07427b2cc8d", + urls = [ + "https://github.com/bazelbuild/bazel-skylib/archive/f80bc733d4b9f83d427ce3442be2e07427b2cc8d.tar.gz", + ], + ) +def rules_python(): + _maybe( + http_archive, + name = "rules_python", + sha256 = "8cc0ad31c8fc699a49ad31628273529ef8929ded0a0859a3d841ce711a9a90d5", + strip_prefix = "rules_python-c7e068d38e2fec1d899e1c150e372f205c220e27", + urls = [ + "https://github.com/bazelbuild/rules_python/archive/c7e068d38e2fec1d899e1c150e372f205c220e27.tar.gz", + ], + ) +def zlib(): + _maybe( + http_archive, + name = "zlib", + sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", + strip_prefix = "zlib-1.2.11", + urls = [ + "https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz", + "https://zlib.net/zlib-1.2.11.tar.gz", + ], + build_file = "@build_stack_rules_proto//third_party:BUILD.bazel.zlib", + ) +def com_github_stackb_grpc_js(): + _maybe( + http_archive, + name = "com_github_stackb_grpc_js", + sha256 = "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596", + strip_prefix = "grpc.js-beb6ac3b43247816c1a1ebf741ebf0c98203414a", + urls = [ + "https://github.com/stackb/grpc.js/archive/beb6ac3b43247816c1a1ebf741ebf0c98203414a.tar.gz", + ], + ) +def com_google_protobuf(): + _maybe( + http_archive, + name = "com_google_protobuf", + sha256 = "d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113", + strip_prefix = "protobuf-3.14.0", + urls = [ + "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz", + ], + ) \ No newline at end of file diff --git a/rules/grpc_js_grpc_library.bzl b/rules/grpc_js_grpc_library.bzl new file mode 100644 index 0000000..5dc8539 --- /dev/null +++ b/rules/grpc_js_grpc_library.bzl @@ -0,0 +1,91 @@ +load( + "@build_stack_rules_proto//rules:grpc_js_grpc_compile.bzl", + "grpc_js_grpc_compile", +) + +load("@build_stack_rules_proto//rules:closure.bzl", "closure_proto_compile") + +load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library") + +PROTO_DEPS = ["@io_bazel_rules_closure//closure/protobuf:jspb"] + +def grpc_js_grpc_library(**kwargs): + + name = kwargs.get("name") + name_pb = name + "_pb" + name_pb_lib = name + "_pb_lib" + name_pb_grpc = name + "_pb_grpc" + + closure_deps = kwargs.pop("closure_deps", []) + deps = kwargs.get("deps", []) + verbose = kwargs.pop("verbose", 0) + visibility = kwargs.get("visibility", []) + tags = kwargs.get("tags", []) + + closure_proto_compile( + name = name_pb, + deps = deps, + visibility = visibility, + verbose = verbose, + tags = tags, + ) + + grpc_js_grpc_compile( + name = name_pb_grpc, + deps = deps, + visibility = visibility, + verbose = verbose, + tags = tags, + ) + + closure_js_library( + name = name_pb_lib, + srcs = [name_pb], + deps = [ + "@io_bazel_rules_closure//closure/protobuf:jspb", + ] + closure_deps, + internal_descriptors = [ + name_pb + "/descriptor.source.bin", + ], + suppress = [ + "JSC_LATE_PROVIDE_ERROR", + "JSC_UNDEFINED_VARIABLE", + "JSC_IMPLICITLY_NULLABLE_JSDOC", + "JSC_STRICT_INEXISTENT_PROPERTY", + "JSC_POSSIBLE_INEXISTENT_PROPERTY", + "JSC_UNRECOGNIZED_TYPE_ERROR", + # "stricterMissingRequireType", + # "analyzerChecks", + # "analyzerChecksInternal", + ], + tags = tags, + visibility = visibility, + ) + + closure_js_library( + name = name, + srcs = [name_pb_grpc], + deps = [ + name_pb_lib, + "@io_bazel_rules_closure//closure/library/promise", + "@com_github_stackb_grpc_js//js/grpc/stream/observer:call", + "@com_github_stackb_grpc_js//js/grpc", + "@com_github_stackb_grpc_js//js/grpc:api", + "@com_github_stackb_grpc_js//js/grpc:options", + ] + closure_deps, + internal_descriptors = [ + name_pb + "/descriptor.source.bin", + name_pb_grpc + "/descriptor.source.bin", + ], + exports = [ + name_pb_lib, + ], + suppress = [ + "JSC_IMPLICITLY_NULLABLE_JSDOC", + # "stricterMissingRequireType", + # "analyzerChecks", + # "analyzerChecksInternal", + ], + tags = tags, + visibility = visibility, + ) \ No newline at end of file diff --git a/rules/grpc_js_grpc_library_deps.bzl b/rules/grpc_js_grpc_library_deps.bzl new file mode 100644 index 0000000..d39de1b --- /dev/null +++ b/rules/grpc_js_grpc_library_deps.bzl @@ -0,0 +1,77 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") + +def _maybe(repo_rule, name, **kwargs): + if name not in native.existing_rules(): + repo_rule(name = name, **kwargs) + +def grpc_js_grpc_library_deps(): + bazel_skylib() + rules_python() + zlib() + com_github_stackb_grpc_js() + com_google_protobuf() + io_bazel_rules_closure() + + +def bazel_skylib(): + _maybe( + http_archive, + name = "bazel_skylib", + sha256 = "ebdf850bfef28d923a2cc67ddca86355a449b5e4f38b0a70e584dc24e5984aa6", + strip_prefix = "bazel-skylib-f80bc733d4b9f83d427ce3442be2e07427b2cc8d", + urls = [ + "https://github.com/bazelbuild/bazel-skylib/archive/f80bc733d4b9f83d427ce3442be2e07427b2cc8d.tar.gz", + ], + ) +def rules_python(): + _maybe( + http_archive, + name = "rules_python", + sha256 = "8cc0ad31c8fc699a49ad31628273529ef8929ded0a0859a3d841ce711a9a90d5", + strip_prefix = "rules_python-c7e068d38e2fec1d899e1c150e372f205c220e27", + urls = [ + "https://github.com/bazelbuild/rules_python/archive/c7e068d38e2fec1d899e1c150e372f205c220e27.tar.gz", + ], + ) +def zlib(): + _maybe( + http_archive, + name = "zlib", + sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", + strip_prefix = "zlib-1.2.11", + urls = [ + "https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz", + "https://zlib.net/zlib-1.2.11.tar.gz", + ], + build_file = "@build_stack_rules_proto//third_party:BUILD.bazel.zlib", + ) +def com_github_stackb_grpc_js(): + _maybe( + http_archive, + name = "com_github_stackb_grpc_js", + sha256 = "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596", + strip_prefix = "grpc.js-beb6ac3b43247816c1a1ebf741ebf0c98203414a", + urls = [ + "https://github.com/stackb/grpc.js/archive/beb6ac3b43247816c1a1ebf741ebf0c98203414a.tar.gz", + ], + ) +def com_google_protobuf(): + _maybe( + http_archive, + name = "com_google_protobuf", + sha256 = "d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113", + strip_prefix = "protobuf-3.14.0", + urls = [ + "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz", + ], + ) +def io_bazel_rules_closure(): + _maybe( + http_archive, + name = "io_bazel_rules_closure", + sha256 = "4c98a6b8d2d81210f3e291b1c7c5034ab2e22e7870ab3e9603599c79833f7da3", + strip_prefix = "rules_closure-4c99be33856ce1b7b80f55a0e9a8345f559b6ef3", + urls = [ + "https://github.com/bazelbuild/rules_closure/archive/4c99be33856ce1b7b80f55a0e9a8345f559b6ef3.tar.gz", + ], + ) \ No newline at end of file From 676be70a7557eeb6fed809e440d0647313bc06fc Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Wed, 10 Feb 2021 11:59:34 -0700 Subject: [PATCH 2/3] Filepath renames --- BUILD.bazel | 2 +- Makefile | 4 ++ WORKSPACE | 7 +++ ...c_js_info_provider_test.golden.1.prototext | 18 -------- plugins/grpc_js/BUILD.bazel | 8 ---- plugins/grpc_js/grpc/BUILD.bazel | 17 -------- protoc-gen-grpc-js/BUILD.bazel | 18 ++++++++ rules/grpc_js_grpc_compile.bzl | 2 +- rules/proto/BUILD.bazel | 39 +++++++++++++++++ rules/proto/grpc_js_grpc_compile/BUILD.bazel | 43 +++++++++++++++++++ ...pile_info_provider_test.golden.1.prototext | 14 +++--- .../proto}/grpc_js_grpc_library/BUILD.bazel | 28 ++++-------- .../grpc_js_grpc_library.bzl.tmpl | 0 ...rary_info_provider_test.golden.1.prototext | 16 +++---- ...c_js_info_provider_test.golden.1.prototext | 18 ++++++++ .../grpc_js => rules/rules_proto}/BUILD.bazel | 6 +-- .../grpc_js_grpc_compile/BUILD.bazel | 24 +++-------- tools/regenerate_golden_files.sh | 8 ++++ 18 files changed, 171 insertions(+), 101 deletions(-) create mode 100644 Makefile delete mode 100644 language/grpc_js/grpc_js_info_provider_test.golden.1.prototext delete mode 100644 plugins/grpc_js/BUILD.bazel delete mode 100644 plugins/grpc_js/grpc/BUILD.bazel create mode 100644 rules/proto/BUILD.bazel create mode 100644 rules/proto/grpc_js_grpc_compile/BUILD.bazel rename {language/grpc_js => rules/proto}/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext (78%) rename {language/grpc_js => rules/proto}/grpc_js_grpc_library/BUILD.bazel (61%) rename {language/grpc_js => rules/proto}/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl (100%) rename {language/grpc_js => rules/proto}/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext (80%) create mode 100644 rules/proto/grpc_js_info_provider_test.golden.1.prototext rename {language/grpc_js => rules/rules_proto}/BUILD.bazel (87%) rename {language/grpc_js => rules/rules_proto}/grpc_js_grpc_compile/BUILD.bazel (66%) create mode 100755 tools/regenerate_golden_files.sh diff --git a/BUILD.bazel b/BUILD.bazel index 2088bda..d357c69 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -4,7 +4,7 @@ filegroup( srcs = [ "BUILD.bazel", "WORKSPACE", - "//plugins/grpc_js/grpc:all_files", + "//protoc-gen-grpc-js:all_files", "//rules:all_files", ] + glob(["*.bzl"]), visibility = ["//visibility:public"], diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3dadf32 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +.PHONY: goldens +goldens: + find . -name '*.prototext' | xargs rm + ./tools/regenerate_golden_files.sh diff --git a/WORKSPACE b/WORKSPACE index 38bd395..6270004 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -13,9 +13,16 @@ load( "com_google_protobuf", "io_bazel_rules_closure", "io_bazel_rules_go", + "rules_cc", "zlib", ) +# ================================================== +# C++ +# ================================================== +# +rules_cc() + # ================================================== # Go # ================================================== diff --git a/language/grpc_js/grpc_js_info_provider_test.golden.1.prototext b/language/grpc_js/grpc_js_info_provider_test.golden.1.prototext deleted file mode 100644 index 0f3e3b0..0000000 --- a/language/grpc_js/grpc_js_info_provider_test.golden.1.prototext +++ /dev/null @@ -1,18 +0,0 @@ -lang { - avatarUrl: "https://user-images.githubusercontent.com/50580/78734761-54effc80-7906-11ea-8f5e-42725718f419.png" - description: "" - displayName: "grpc.js" - markdownFilename: "bazel-out/{HOST_CONFIGURATION}/bin/language/grpc_js/grpc_js.md" - markdownTmpl: "external/build_stack_rules_proto/language/proto_language.md.tmpl" - name: "grpc_js" - package: "rules" - prefix: "grpc_js" - rules: "grpc_js_grpc_compile" - rules: "grpc_js_grpc_library" - rulesFilename: "bazel-out/{HOST_CONFIGURATION}/bin/language/grpc_js/grpc_js.bzl" - rulesTmpl: "external/build_stack_rules_proto/language/rules.bzl.tmpl" -} -markdown_file: "language/grpc_js/grpc_js.md" -name: "grpc_js" -prefix: "grpc_js" -rules_file: "language/grpc_js/grpc_js.bzl" diff --git a/plugins/grpc_js/BUILD.bazel b/plugins/grpc_js/BUILD.bazel deleted file mode 100644 index 62d3642..0000000 --- a/plugins/grpc_js/BUILD.bazel +++ /dev/null @@ -1,8 +0,0 @@ -filegroup( - name = "all_files", - testonly = True, - srcs = [ - "//plugins/grpc_js/grpc:all_files", - ], - visibility = ["//visibility:public"], -) diff --git a/plugins/grpc_js/grpc/BUILD.bazel b/plugins/grpc_js/grpc/BUILD.bazel deleted file mode 100644 index 1f8c310..0000000 --- a/plugins/grpc_js/grpc/BUILD.bazel +++ /dev/null @@ -1,17 +0,0 @@ -load("@build_stack_rules_proto//rules:proto_plugin.bzl", "proto_plugin") - -proto_plugin( - name = "grpc", - exclusions = ["google/protobuf"], # TODO(pcj): is this needed? - outputs = ["{protopath}.grpc.js"], - protoc_plugin_name = "grpc_js", - tool = "@com_github_stackb_grpc_js//protoc-gen-grpc-js", - visibility = ["//visibility:public"], -) - -filegroup( - name = "all_files", - testonly = True, - srcs = glob(["**"]), - visibility = ["//visibility:public"], -) diff --git a/protoc-gen-grpc-js/BUILD.bazel b/protoc-gen-grpc-js/BUILD.bazel index 93b8951..ce848a7 100644 --- a/protoc-gen-grpc-js/BUILD.bazel +++ b/protoc-gen-grpc-js/BUILD.bazel @@ -1,5 +1,16 @@ +load("@rules_cc//cc:defs.bzl", "cc_binary") +load("@build_stack_rules_proto//rules:proto_plugin.bzl", "proto_plugin") + package(default_visibility = ["//visibility:public"]) +proto_plugin( + name = "grpc_js", + exclusions = ["google/protobuf"], # TODO(pcj): is this needed? + outputs = ["{protopath}.grpc.js"], + tool = ":protoc-gen-grpc-js", + visibility = ["//visibility:public"], +) + cc_binary( name = "protoc-gen-grpc-js", srcs = [ @@ -9,3 +20,10 @@ cc_binary( "@com_google_protobuf//:protoc_lib", ], ) + +filegroup( + name = "all_files", + testonly = True, + srcs = glob(["**"]), + visibility = ["//visibility:public"], +) diff --git a/rules/grpc_js_grpc_compile.bzl b/rules/grpc_js_grpc_compile.bzl index 55e0343..87d8de4 100644 --- a/rules/grpc_js_grpc_compile.bzl +++ b/rules/grpc_js_grpc_compile.bzl @@ -7,7 +7,7 @@ load( _default_plugins = [ str(Label("@build_stack_rules_proto//plugins/closure/proto:proto")), - str(Label("//plugins/grpc_js/grpc:grpc")), + str(Label("//protoc-gen-grpc-js:grpc_js")), ] _grpc_js_grpc_compile_aspect = proto_compile_aspect(_default_plugins, "grpc_js_grpc_compile_aspect") diff --git a/rules/proto/BUILD.bazel b/rules/proto/BUILD.bazel new file mode 100644 index 0000000..1708a2b --- /dev/null +++ b/rules/proto/BUILD.bazel @@ -0,0 +1,39 @@ +load("@build_stack_rules_proto//rules/proto:proto_language_info_provider_test.bzl", "proto_language_info_provider_test") +load("@build_stack_rules_proto//rules/proto:proto_language_test.bzl", "proto_language_test") +load("@build_stack_rules_proto//rules/proto:proto_language.bzl", "proto_language") +load("@build_stack_rules_proto//rules:proto_dependency.bzl", "proto_dependency") + +proto_language( + name = "grpc_js", + avatar_url = "https://user-images.githubusercontent.com/50580/78734761-54effc80-7906-11ea-8f5e-42725718f419.png", + display_name = "grpc.js", + package = "rules", + prefix = "grpc_js", + rules = [ + "grpc_js_grpc_compile", + "grpc_js_grpc_library", + ], + visibility = ["//visibility:public"], +) + +proto_language_info_provider_test( + name = "grpc_js_info_provider_test", + srcs = ["grpc_js_info_provider_test.golden.1.prototext"], + deps = [":grpc_js"], +) + +proto_language_test( + name = "grpc_js_language_test", + srcs = ["//rules:grpc_js.bzl"], + package = "rules", + deps = [":grpc_js"], +) + +proto_dependency( + name = "com_github_stackb_grpc_js", + repository_rule = "http_archive", + sha256 = "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596", + strip_prefix = "grpc.js-beb6ac3b43247816c1a1ebf741ebf0c98203414a", + urls = ["https://github.com/stackb/grpc.js/archive/beb6ac3b43247816c1a1ebf741ebf0c98203414a.tar.gz"], + visibility = ["//visibility:public"], +) diff --git a/rules/proto/grpc_js_grpc_compile/BUILD.bazel b/rules/proto/grpc_js_grpc_compile/BUILD.bazel new file mode 100644 index 0000000..5b571a6 --- /dev/null +++ b/rules/proto/grpc_js_grpc_compile/BUILD.bazel @@ -0,0 +1,43 @@ +load("@build_stack_rules_proto//rules/proto:proto_rule_info_provider_test.bzl", "proto_rule_info_provider_test") +load("@build_stack_rules_proto//rules/proto:proto_rule_test.bzl", "proto_rule_test") +load("@build_stack_rules_proto//rules/proto:proto_rule_bazel_test.bzl", "proto_rule_bazel_test") +load("@build_stack_rules_proto//rules/proto:proto_rule.bzl", "proto_rule") + +proto_rule( + name = "grpc_js_grpc_compile", + build_example_tmpl = "@build_stack_rules_proto//core/grpc:BUILD.tmpl", + kind = "grpc", + language = "//rules/proto:grpc_js", + package = "rules", + plugins = [ + "@build_stack_rules_proto//plugins/closure/proto", + "//protoc-gen-grpc-js:grpc_js", + ], + visibility = ["//visibility:public"], + deps = [ + "//rules/proto:com_github_stackb_grpc_js", + "@build_stack_rules_proto//core:com_google_protobuf", + ], +) + +proto_rule_info_provider_test( + name = "grpc_js_grpc_compile_info_provider_test", + srcs = ["grpc_js_grpc_compile_info_provider_test.golden.1.prototext"], + deps = [":grpc_js_grpc_compile"], +) + +proto_rule_test( + name = "grpc_js_grpc_compile_rule_test", + srcs = [ + "//rules:grpc_js_grpc_compile.bzl", + "//rules:grpc_js_grpc_compile_deps.bzl", + ], + package = "rules", + deps = [":grpc_js_grpc_compile"], +) + +proto_rule_bazel_test( + name = "grpc_js_grpc_compile_rule_bazel_test", + tags = ["exclusive"], + deps = ["grpc_js_grpc_compile"], +) diff --git a/language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext b/rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext similarity index 78% rename from language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext rename to rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext index b191dc6..540d3d5 100644 --- a/language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext +++ b/rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile_info_provider_test.golden.1.prototext @@ -1,6 +1,6 @@ -bazel_test_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_bazel_test.go" -build_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile.BUILD" -bzl_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile.bzl" +bazel_test_file: "rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile_bazel_test.go" +build_file: "rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile.BUILD" +bzl_file: "rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile.bzl" deps { buildFile: "" label: "@build_stack_rules_proto//core:bazel_skylib" @@ -34,7 +34,7 @@ deps { } deps { buildFile: "" - label: "//language/grpc_js:com_github_stackb_grpc_js" + label: "//rules/proto:com_github_stackb_grpc_js" name: "com_github_stackb_grpc_js" repositoryRule: "http_archive" sha256: "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596" @@ -52,7 +52,7 @@ deps { urls: "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz" workspaceSnippet: "" } -deps_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile_deps.bzl" -json_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile.json" +deps_file: "rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile_deps.bzl" +json_file: "rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile.json" name: "grpc_js_grpc_compile" -workspace_file: "language/grpc_js/grpc_js_grpc_compile/grpc_js_grpc_compile.WORKSPACE" +workspace_file: "rules/proto/grpc_js_grpc_compile/grpc_js_grpc_compile.WORKSPACE" diff --git a/language/grpc_js/grpc_js_grpc_library/BUILD.bazel b/rules/proto/grpc_js_grpc_library/BUILD.bazel similarity index 61% rename from language/grpc_js/grpc_js_grpc_library/BUILD.bazel rename to rules/proto/grpc_js_grpc_library/BUILD.bazel index 94aef75..08c5302 100644 --- a/language/grpc_js/grpc_js_grpc_library/BUILD.bazel +++ b/rules/proto/grpc_js_grpc_library/BUILD.bazel @@ -1,36 +1,24 @@ -load( - "@build_stack_rules_proto//language/rules:proto_rule_info_provider_test.bzl", - "proto_rule_info_provider_test", -) -load( - "@build_stack_rules_proto//language/rules:proto_rule_test.bzl", - "proto_rule_test", -) -load( - "@build_stack_rules_proto//language/rules:proto_rule_bazel_test.bzl", - "proto_rule_bazel_test", -) -load( - "@build_stack_rules_proto//language/rules:proto_rule.bzl", - "proto_rule", -) +load("@build_stack_rules_proto//rules/proto:proto_rule_info_provider_test.bzl", "proto_rule_info_provider_test") +load("@build_stack_rules_proto//rules/proto:proto_rule_test.bzl", "proto_rule_test") +load("@build_stack_rules_proto//rules/proto:proto_rule_bazel_test.bzl", "proto_rule_bazel_test") +load("@build_stack_rules_proto//rules/proto:proto_rule.bzl", "proto_rule") proto_rule( name = "grpc_js_grpc_library", build_example_tmpl = "@build_stack_rules_proto//core/grpc:BUILD.tmpl", implementation_tmpl = "grpc_js_grpc_library.bzl.tmpl", kind = "grpc", - language = "//language/grpc_js", + language = "//rules/proto:grpc_js", package = "rules", plugins = [ "@build_stack_rules_proto//plugins/closure/proto", - "//plugins/grpc_js/grpc", + "//protoc-gen-grpc-js:grpc_js", ], visibility = ["//visibility:public"], deps = [ - "//language/grpc_js:com_github_stackb_grpc_js", + "//rules/proto:com_github_stackb_grpc_js", "@build_stack_rules_proto//core:com_google_protobuf", - "@build_stack_rules_proto//language/closure:io_bazel_rules_closure", + "@build_stack_rules_proto//rules/proto/closure:io_bazel_rules_closure", ], ) diff --git a/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl b/rules/proto/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl similarity index 100% rename from language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl rename to rules/proto/grpc_js_grpc_library/grpc_js_grpc_library.bzl.tmpl diff --git a/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext b/rules/proto/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext similarity index 80% rename from language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext rename to rules/proto/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext index bd37f29..bcc890c 100644 --- a/language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext +++ b/rules/proto/grpc_js_grpc_library/grpc_js_grpc_library_info_provider_test.golden.1.prototext @@ -1,6 +1,6 @@ -bazel_test_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_bazel_test.go" -build_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.BUILD" -bzl_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.bzl" +bazel_test_file: "rules/proto/grpc_js_grpc_library/grpc_js_grpc_library_bazel_test.go" +build_file: "rules/proto/grpc_js_grpc_library/grpc_js_grpc_library.BUILD" +bzl_file: "rules/proto/grpc_js_grpc_library/grpc_js_grpc_library.bzl" deps { buildFile: "" label: "@build_stack_rules_proto//core:bazel_skylib" @@ -34,7 +34,7 @@ deps { } deps { buildFile: "" - label: "//language/grpc_js:com_github_stackb_grpc_js" + label: "//rules/proto:com_github_stackb_grpc_js" name: "com_github_stackb_grpc_js" repositoryRule: "http_archive" sha256: "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596" @@ -54,7 +54,7 @@ deps { } deps { buildFile: "" - label: "@build_stack_rules_proto//language/closure:io_bazel_rules_closure" + label: "@build_stack_rules_proto//rules/proto/closure:io_bazel_rules_closure" name: "io_bazel_rules_closure" repositoryRule: "http_archive" sha256: "4c98a6b8d2d81210f3e291b1c7c5034ab2e22e7870ab3e9603599c79833f7da3" @@ -62,7 +62,7 @@ deps { urls: "https://github.com/bazelbuild/rules_closure/archive/4c99be33856ce1b7b80f55a0e9a8345f559b6ef3.tar.gz" workspaceSnippet: "load(\"@io_bazel_rules_closure//closure:repositories.bzl\", \"rules_closure_dependencies\", \"rules_closure_toolchains\")\n\nrules_closure_dependencies(\n omit_bazel_skylib = False,\n omit_com_google_protobuf = True,\n omit_zlib = True,\n)\n\nrules_closure_toolchains()" } -deps_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library_deps.bzl" -json_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.json" +deps_file: "rules/proto/grpc_js_grpc_library/grpc_js_grpc_library_deps.bzl" +json_file: "rules/proto/grpc_js_grpc_library/grpc_js_grpc_library.json" name: "grpc_js_grpc_library" -workspace_file: "language/grpc_js/grpc_js_grpc_library/grpc_js_grpc_library.WORKSPACE" +workspace_file: "rules/proto/grpc_js_grpc_library/grpc_js_grpc_library.WORKSPACE" diff --git a/rules/proto/grpc_js_info_provider_test.golden.1.prototext b/rules/proto/grpc_js_info_provider_test.golden.1.prototext new file mode 100644 index 0000000..804a866 --- /dev/null +++ b/rules/proto/grpc_js_info_provider_test.golden.1.prototext @@ -0,0 +1,18 @@ +lang { + avatarUrl: "https://user-images.githubusercontent.com/50580/78734761-54effc80-7906-11ea-8f5e-42725718f419.png" + description: "" + displayName: "grpc.js" + markdownFilename: "bazel-out/{HOST_CONFIGURATION}/bin/rules/proto/grpc_js.md" + markdownTmpl: "external/build_stack_rules_proto/rules/proto/proto_language.md.tmpl" + name: "grpc_js" + package: "rules" + prefix: "grpc_js" + rules: "grpc_js_grpc_compile" + rules: "grpc_js_grpc_library" + rulesFilename: "bazel-out/{HOST_CONFIGURATION}/bin/rules/proto/grpc_js.bzl" + rulesTmpl: "external/build_stack_rules_proto/rules/proto/rules.bzl.tmpl" +} +markdown_file: "rules/proto/grpc_js.md" +name: "grpc_js" +prefix: "grpc_js" +rules_file: "rules/proto/grpc_js.bzl" diff --git a/language/grpc_js/BUILD.bazel b/rules/rules_proto/BUILD.bazel similarity index 87% rename from language/grpc_js/BUILD.bazel rename to rules/rules_proto/BUILD.bazel index 3851fe7..7957724 100644 --- a/language/grpc_js/BUILD.bazel +++ b/rules/rules_proto/BUILD.bazel @@ -1,13 +1,13 @@ load( - "@build_stack_rules_proto//language/rules:proto_language_info_provider_test.bzl", + "@build_stack_rules_proto//rules/proto:proto_language_info_provider_test.bzl", "proto_language_info_provider_test", ) load( - "@build_stack_rules_proto//language/rules:proto_language_test.bzl", + "@build_stack_rules_proto//rules/proto:proto_language_test.bzl", "proto_language_test", ) load( - "@build_stack_rules_proto//language/rules:proto_language.bzl", + "@build_stack_rules_proto//rules/proto:proto_language.bzl", "proto_language", ) load( diff --git a/language/grpc_js/grpc_js_grpc_compile/BUILD.bazel b/rules/rules_proto/grpc_js_grpc_compile/BUILD.bazel similarity index 66% rename from language/grpc_js/grpc_js_grpc_compile/BUILD.bazel rename to rules/rules_proto/grpc_js_grpc_compile/BUILD.bazel index c9c0853..99ff3ac 100644 --- a/language/grpc_js/grpc_js_grpc_compile/BUILD.bazel +++ b/rules/rules_proto/grpc_js_grpc_compile/BUILD.bazel @@ -1,29 +1,17 @@ -load( - "@build_stack_rules_proto//language/rules:proto_rule_info_provider_test.bzl", - "proto_rule_info_provider_test", -) -load( - "@build_stack_rules_proto//language/rules:proto_rule_test.bzl", - "proto_rule_test", -) -load( - "@build_stack_rules_proto//language/rules:proto_rule_bazel_test.bzl", - "proto_rule_bazel_test", -) -load( - "@build_stack_rules_proto//language/rules:proto_rule.bzl", - "proto_rule", -) +load("@build_stack_rules_proto//rules/proto:proto_rule_info_provider_test.bzl", "proto_rule_info_provider_test") +load("@build_stack_rules_proto//rules/proto:proto_rule_test.bzl", "proto_rule_test") +load("@build_stack_rules_proto//rules/proto:proto_rule_bazel_test.bzl", "proto_rule_bazel_test") +load("@build_stack_rules_proto//rules/proto:proto_rule.bzl", "proto_rule") proto_rule( name = "grpc_js_grpc_compile", build_example_tmpl = "@build_stack_rules_proto//core/grpc:BUILD.tmpl", kind = "grpc", - language = "//language/grpc_js", + language = "//rules/rules_proto:grpc_js", package = "rules", plugins = [ "@build_stack_rules_proto//plugins/closure/proto", - "//plugins/grpc_js/grpc", + "//protoc-gen-grpc-js:grpc_js", ], visibility = ["//visibility:public"], deps = [ diff --git a/tools/regenerate_golden_files.sh b/tools/regenerate_golden_files.sh new file mode 100755 index 0000000..adc4b23 --- /dev/null +++ b/tools/regenerate_golden_files.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +for LABEL in $(bazel query 'kind(".*_run", //rules/proto/...)' --output label) +do + bazel run "$LABEL" +done From 54a65ea55c3e6f47b9dbb35e3139a0c74dd77f20 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Wed, 10 Feb 2021 12:02:18 -0700 Subject: [PATCH 3/3] Filepath cleanup --- rules/rules_proto/BUILD.bazel | 60 ------------------- .../grpc_js_grpc_compile/BUILD.bazel | 43 ------------- 2 files changed, 103 deletions(-) delete mode 100644 rules/rules_proto/BUILD.bazel delete mode 100644 rules/rules_proto/grpc_js_grpc_compile/BUILD.bazel diff --git a/rules/rules_proto/BUILD.bazel b/rules/rules_proto/BUILD.bazel deleted file mode 100644 index 7957724..0000000 --- a/rules/rules_proto/BUILD.bazel +++ /dev/null @@ -1,60 +0,0 @@ -load( - "@build_stack_rules_proto//rules/proto:proto_language_info_provider_test.bzl", - "proto_language_info_provider_test", -) -load( - "@build_stack_rules_proto//rules/proto:proto_language_test.bzl", - "proto_language_test", -) -load( - "@build_stack_rules_proto//rules/proto:proto_language.bzl", - "proto_language", -) -load( - "@build_stack_rules_proto//rules:proto_dependency.bzl", - "proto_dependency", -) - -proto_language( - name = "grpc_js", - avatar_url = "https://user-images.githubusercontent.com/50580/78734761-54effc80-7906-11ea-8f5e-42725718f419.png", - display_name = "grpc.js", - package = "rules", - prefix = "grpc_js", - rules = [ - "grpc_js_grpc_compile", - "grpc_js_grpc_library", - ], - visibility = ["//visibility:public"], -) - -proto_language_info_provider_test( - name = "grpc_js_info_provider_test", - srcs = ["grpc_js_info_provider_test.golden.1.prototext"], - deps = [":grpc_js"], -) - -proto_language_test( - name = "grpc_js_language_test", - srcs = ["//rules:grpc_js.bzl"], - package = "rules", - deps = [":grpc_js"], -) - -# Branch: master -# Commit: beb6ac3b43247816c1a1ebf741ebf0c98203414a -# Date: 2021-02-09 22:02:48 +0000 UTC -# URL: https://github.com/stackb/grpc.js/commit/beb6ac3b43247816c1a1ebf741ebf0c98203414a -# -# Fix dangling build link (#7) -# -# * Fix dangling build ref -# Size: 30483 (30 kB) -proto_dependency( - name = "com_github_stackb_grpc_js", - repository_rule = "http_archive", - sha256 = "f9cb4d932badc71d90a89263eabc93551923bb5c621e0940c7cfeaa79ef02596", - strip_prefix = "grpc.js-beb6ac3b43247816c1a1ebf741ebf0c98203414a", - urls = ["https://github.com/stackb/grpc.js/archive/beb6ac3b43247816c1a1ebf741ebf0c98203414a.tar.gz"], - visibility = ["//visibility:public"], -) diff --git a/rules/rules_proto/grpc_js_grpc_compile/BUILD.bazel b/rules/rules_proto/grpc_js_grpc_compile/BUILD.bazel deleted file mode 100644 index 99ff3ac..0000000 --- a/rules/rules_proto/grpc_js_grpc_compile/BUILD.bazel +++ /dev/null @@ -1,43 +0,0 @@ -load("@build_stack_rules_proto//rules/proto:proto_rule_info_provider_test.bzl", "proto_rule_info_provider_test") -load("@build_stack_rules_proto//rules/proto:proto_rule_test.bzl", "proto_rule_test") -load("@build_stack_rules_proto//rules/proto:proto_rule_bazel_test.bzl", "proto_rule_bazel_test") -load("@build_stack_rules_proto//rules/proto:proto_rule.bzl", "proto_rule") - -proto_rule( - name = "grpc_js_grpc_compile", - build_example_tmpl = "@build_stack_rules_proto//core/grpc:BUILD.tmpl", - kind = "grpc", - language = "//rules/rules_proto:grpc_js", - package = "rules", - plugins = [ - "@build_stack_rules_proto//plugins/closure/proto", - "//protoc-gen-grpc-js:grpc_js", - ], - visibility = ["//visibility:public"], - deps = [ - "//language/grpc_js:com_github_stackb_grpc_js", - "@build_stack_rules_proto//core:com_google_protobuf", - ], -) - -proto_rule_info_provider_test( - name = "grpc_js_grpc_compile_info_provider_test", - srcs = ["grpc_js_grpc_compile_info_provider_test.golden.1.prototext"], - deps = [":grpc_js_grpc_compile"], -) - -proto_rule_test( - name = "grpc_js_grpc_compile_rule_test", - srcs = [ - "//rules:grpc_js_grpc_compile.bzl", - "//rules:grpc_js_grpc_compile_deps.bzl", - ], - package = "rules", - deps = [":grpc_js_grpc_compile"], -) - -proto_rule_bazel_test( - name = "grpc_js_grpc_compile_rule_bazel_test", - tags = ["exclusive"], - deps = ["grpc_js_grpc_compile"], -)