python/connector_rules.bzl (88 lines of code) (raw):

load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") load("@rules_proto//proto:defs.bzl", "proto_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@rules_proto_grpc//python:defs.bzl", "python_grpc_library") load("@rules_python//experimental/python:wheel.bzl", "py_package") def connector(name, resources): pkg = "_".join(name.split("/")) go_library( name = "%s_connector" % pkg, srcs = ["register.go"] + ["%s_server.go" % r for r in resources], importpath = "github.com/GoogleCloudPlatform/declarative-resource-client-library/python/services/%s" % name, visibility = ["//visibility:public"], deps = [ "//proto:empty_go_proto", "//proto/%s:%s_go_proto" % (name, pkg), "@core_dcl//dcl:go_default_library", "@core_dcl//hclconv:go_default_library", "@core_dcl//services/google/%s:go_default_library" % name, "@org_golang_google_grpc//:go_default_library", ], ) native.py_library( name = pkg + "_py", srcs = ["%s.py" % r for r in resources], visibility = ["//visibility:public"], deps = [ "//connector:connector_py", "//proto:python_proto_library", ], ) def all_packages(names): native.genrule( name = "dummy_binary", srcs = [], outs = ["all_packages.py"], cmd = "echo \"\" > \"$@\"", ) native.py_binary( name = "all_packages", srcs = ["all_packages.py"], visibility = ["//visibility:public"], deps = [ "//services/%s:%s_py" % (name, name.replace("/", "_")) for name in names ], ) py_package( name = "pkg", deps = [ ":all_packages", "//proto:python_proto_library", ], packages = ["dcl", "proto", "services", "connector"], visibility = ["//visibility:public"], ) def proto_package(name, resources): pkg = "_".join(name.split("/")) proto_library( name = "%s_proto" % pkg, srcs = ["%s.proto" % r for r in resources], visibility = ["//visibility:public"], deps = [ "//proto:empty_proto", "//proto/connector:sdk_proto", ], ) go_proto_library( name = "%s_go_proto" % pkg, compilers = ["@io_bazel_rules_go//proto:go_grpc"], importpath = "github.com/GoogleCloudPlatform/declarative-resource-client-library/python/proto/%s/%s_go_proto" % (name, pkg), proto = ":%s_proto" % pkg, visibility = ["//visibility:public"], deps = [ "//proto:empty_go_proto", "//proto/connector:sdk_go_proto", ], ) def python_protos(packages): python_grpc_library( name = "python_proto_library", visibility = ["//visibility:public"], deps = [ ":empty_proto", "//proto/connector:connector_proto", "//proto/connector:sdk_proto", ] + ["//proto/%s:%s_proto" % (p, p.replace("/", "_")) for p in packages], )