def test_fix_grpc_license(): with tempfile.TemporaryDirectory() as tempdir: temppath = Path(tempdir).resolve() os.mkdir(temppath / "src") shutil.copyfile("tests/testdata/src/foo/FooGrpc.java", temppath / "src/FooGrpc.java") java.fix_grpc_headers(temppath) assert_matches_golden("tests/testdata/FooGrpcGolden.java", temppath / "src/FooGrpc.java")
def build_grpc(target): """Build a grpc build target and copy all generate source files.""" output = bazel_build( target=target, cwd=googleapis, ) src_output = Path(tempfile.mkdtemp()) for proto_jar in output.glob("*grpc-src.jar"): logger.debug(f"unzipping: {os.path.basename(proto_jar)}") shell.run(["unzip", "-o", proto_jar, "-d", src_output / "src"]) java.fix_grpc_headers(src_output, "") s.copy(src_output / "src/com", "grpc-google-iam-v1/src/main/java/com")
def generate_admin_api(gapic): library = gapic.java_library( service='bigtable-admin', version='v2', bazel_target= f'//google/bigtable/admin/v2:google-cloud-bigtable-admin-v2-java', proto_path=f'google/bigtable/admin/v2', ) library = library / 'google-cloud-bigtable-admin-v2-java' # Excludes are relative to source `gapic-google-cloud-bigtable-v2/src` excludes = [ "main/java/com/google/cloud/bigtable/admin/v2/package-info.java", ] # Paths are relative to the destination, which is the current working directory internal_only = [ 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableInstanceAdminCallableFactory.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableInstanceAdminStub.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminSettings.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableTableAdminCallableFactory.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableTableAdminStub.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminSettings.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/BigtableInstanceAdminStub.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/BigtableTableAdminStub.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminClient.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminClient.java', ] package_name = f'com.google.cloud.bigtable.admin.v2' java.fix_proto_headers(library / f'proto-google-cloud-bigtable-admin-v2-java') java.fix_grpc_headers( library / f'grpc-google-cloud-bigtable-admin-v2-java', package_name) s.copy(library / f'gapic-google-cloud-bigtable-admin-v2-java/src', 'google-cloud-bigtable/src', excludes=excludes) s.copy(library / f'grpc-google-cloud-bigtable-admin-v2-java/src', f'grpc-google-cloud-bigtable-admin-v2/src') s.copy(library / f'proto-google-cloud-bigtable-admin-v2-java/src', f'proto-google-cloud-bigtable-admin-v2/src') make_internal_only(internal_only) java.format_code(f'./grpc-google-cloud-bigtable-admin-v2/src') java.format_code(f'./proto-google-cloud-bigtable-admin-v2/src')
def generate_data_api(gapic): library = gapic.java_library( service='bigtable', version='v2', proto_path=f'google/bigtable/v2', bazel_target=f'//google/bigtable/v2:google-cloud-bigtable-v2-java', ) library = library / 'google-cloud-bigtable-v2-java' # Excludes are relative to source `gapic-google-cloud-bigtable-v2/src` excludes = [ "build.gradle", "pom.xml", "README.md", "src/main/java/com/google/cloud/bigtable/data/v2/package-info.java", "src/main/java/com/google/cloud/bigtable/data/v2/BaseBigtableDataClient.java", "src/main/java/com/google/cloud/bigtable/data/v2/BaseBigtableDataSettings.java", "src/test/java/com/google/cloud/bigtable/data/v2/BaseBigtableDataClientTest.java", "src/test/java/com/google/cloud/bigtable/data/v2/MockBigtable.java", "src/test/java/com/google/cloud/bigtable/data/v2/MockBigtableImpl.java", ] # Paths are relative to the destination, which is the current working directory internal_only = [ "google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStub.java", 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java', "google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/GrpcBigtableStub.java", "google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/GrpcBigtableCallableFactory.java", ] package_name = f'com.google.bigtable.v2' java.fix_proto_headers(library / f'proto-google-cloud-bigtable-v2-java') java.fix_grpc_headers(library / f'grpc-google-cloud-bigtable-v2-java', package_name) s.copy(library / f'gapic-google-cloud-bigtable-v2-java', 'google-cloud-bigtable/', excludes=excludes) s.copy(library / f'grpc-google-cloud-bigtable-v2-java/src', f'grpc-google-cloud-bigtable-v2/src') s.copy(library / f'proto-google-cloud-bigtable-v2-java/src', f'proto-google-cloud-bigtable-v2/src') make_internal_only(internal_only) java.format_code(f'./grpc-google-cloud-bigtable-v2/src') java.format_code(f'./proto-google-cloud-bigtable-v2/src')
gapic = gcp.GAPICGenerator() service = 'automl' versions = ['v1beta1', 'v1'] config_pattern = '/google/cloud/automl/artman_automl_{version}.yaml' for version in versions: library = gapic.java_library( service=service, version=version, config_path=config_pattern.format(version=version), artman_output_name='') package_name = f'com.google.cloud.{service}.{version}' java.fix_proto_headers(library / f'proto-google-cloud-{service}-{version}') java.fix_grpc_headers(library / f'grpc-google-cloud-{service}-{version}', package_name) s.copy(library / f'gapic-google-cloud-{service}-{version}/src', f'google-cloud-{service}/src') s.copy(library / f'grpc-google-cloud-{service}-{version}/src', f'grpc-google-cloud-{service}-{version}/src') s.copy(library / f'proto-google-cloud-{service}-{version}/src', f'proto-google-cloud-{service}-{version}/src') java.format_code(f'google-cloud-{service}/src') java.format_code(f'grpc-google-cloud-{service}-{version}/src') java.format_code(f'proto-google-cloud-{service}-{version}/src') common_templates = gcp.CommonTemplates() templates = common_templates.java_library() s.copy(templates, excludes=[
ERROR_GROUP_OVERLOAD_PREVIOUS_METHOD = r'(\s+public ErrorGroupServiceStub getStub\(\) {\n\s+return stub;\n\s+})' for version in versions: library = gapic.java_library( service=service, version=version, proto_path=f'google/devtools/clouderrorreporting/{version}', bazel_target= f'//google/devtools/clouderrorreporting/{version}:google-cloud-{service}-{version}-java', ) library = library / f"google-cloud-{service}-{version}-java" java.fix_proto_headers(library / f'proto-google-cloud-{service}-{version}-java') java.fix_grpc_headers( library / f'grpc-google-cloud-{service}-{version}-java', "") s.replace( library / f'gapic-google-cloud-{service}-{version}-java/src/**/ErrorGroupServiceClient.java', ERROR_GROUP_OVERLOAD_PREVIOUS_METHOD, "\g<1>\n\n" + ERROR_GROUP_OVERLOAD) s.replace( library / f'gapic-google-cloud-{service}-{version}-java/src/**/ErrorGroupServiceClient.java', "import com.google.devtools.clouderrorreporting.v1beta1.ErrorGroupName;", "import com.google.devtools.clouderrorreporting.v1beta1.ErrorGroupName;\nimport com.google.devtools.clouderrorreporting.v1beta1.GroupName;" ) s.copy(library / f'gapic-google-cloud-{service}-{version}-java/src', f'google-cloud-errorreporting/src')
AUTOSYNTH_MULTIPLE_COMMITS = True gapic = gcp.GAPICBazel() library = gapic.java_library( service='spanner', version='v1', proto_path=f'google/spanner/v1', bazel_target=f'//google/spanner/v1:google-cloud-spanner-v1-java', ) library = library / f"google-cloud-spanner-v1-java" java.fix_proto_headers(library / 'proto-google-cloud-spanner-v1-java') java.fix_grpc_headers(library / 'grpc-google-cloud-spanner-v1-java', 'com.google.spanner.v1') s.copy(library / 'gapic-google-cloud-spanner-v1-java/src', 'google-cloud-spanner/src') s.copy(library / 'grpc-google-cloud-spanner-v1-java/src', 'grpc-google-cloud-spanner-v1/src') s.copy(library / 'proto-google-cloud-spanner-v1-java/src', 'proto-google-cloud-spanner-v1/src') library = gapic.java_library( service='admin-database', version='v1', proto_path=f'google/spanner/admin/database/v1', bazel_target= f'//google/spanner/admin/database/v1:google-cloud-admin-database-v1-java', )
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from pathlib import Path import glob from synthtool.languages import java root = Path(".").resolve() # Until the generator generates license headers on generated proto # classes, add the license headers in for path in glob.glob("proto-google-*"): java.fix_proto_headers(root / path) # Until the generator generates license headers on generated grpc # classes, add the license headers in for path in glob.glob("grpc-google-*"): java.fix_grpc_headers(root / path, "unused")
def generate_admin_api(gapic): library = gapic.java_library( service='bigtable-admin', version='v2', bazel_target= f'//google/bigtable/admin/v2:google-cloud-bigtable-admin-v2-java', proto_path=f'google/bigtable/admin/v2', ) library = library / 'google-cloud-bigtable-admin-v2-java' # Excludes are relative to source `gapic-google-cloud-bigtable-v2/src` excludes = [ "main/java/com/google/cloud/bigtable/admin/v2/package-info.java", ] # Paths are relative to the destination, which is the current working directory internal_only = [ 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableInstanceAdminCallableFactory.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableInstanceAdminStub.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminSettings.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableTableAdminCallableFactory.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableTableAdminStub.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminSettings.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/BigtableInstanceAdminStub.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/BigtableTableAdminStub.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminClient.java', 'google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminClient.java', ] package_name = f'com.google.cloud.bigtable.admin.v2' java.fix_proto_headers(library / f'proto-google-cloud-bigtable-admin-v2-java') java.fix_grpc_headers( library / f'grpc-google-cloud-bigtable-admin-v2-java', package_name) s.copy(library / f'gapic-google-cloud-bigtable-admin-v2-java/src', 'google-cloud-bigtable/src', excludes=excludes) s.copy(library / f'grpc-google-cloud-bigtable-admin-v2-java/src', f'grpc-google-cloud-bigtable-admin-v2/src') s.copy(library / f'proto-google-cloud-bigtable-admin-v2-java/src', f'proto-google-cloud-bigtable-admin-v2/src') #todo: fix in synthtool removing comments with method java.remove_method( f'./grpc-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/BigtableInstanceAdminGrpc.java', "public UnaryCallSettings<Instance, Instance> updateInstanceSettings()" ) java.remove_method( f'./google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminSettings.java', "/** Returns the builder for the settings used for calls to updateInstance. */" ) java.remove_method( f'./google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminSettings.java', "public UnaryCallSettings.Builder<Instance, Instance> updateInstanceSettings()" ) java.remove_method( f'./google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminSettings.java', "/** Returns the object with the settings used for calls to updateInstance. */" ) java.remove_method( f'./google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminSettings.java', "public UnaryCallSettings<Instance, Instance> updateInstanceSettings()" ) make_internal_only(internal_only) java.format_code(f'./grpc-google-cloud-bigtable-admin-v2/src') java.format_code(f'./proto-google-cloud-bigtable-admin-v2/src')
gapic = gcp.GAPICGenerator() service = 'dialogflow' versions = ['v2', 'v2beta1'] config_pattern = '/google/cloud/dialogflow/{version}/artman_dialogflow_{version}.yaml' library = gapic.java_library( service=service, version='v2', config_path='/google/cloud/dialogflow/v2/artman_dialogflow_v2.yaml', artman_output_name='') package_name = f'com.google.cloud.{service}.v2' java.fix_proto_headers(library / f'proto-google-cloud-{service}-v2') java.fix_grpc_headers(library / f'grpc-google-cloud-{service}-v2', package_name) s.copy(library / f'gapic-google-cloud-{service}-v2/src', f'google-cloud-{service}/src') s.copy(library / f'grpc-google-cloud-{service}-v2/src', f'grpc-google-cloud-{service}-v2/src') s.copy(library / f'proto-google-cloud-{service}-v2/src', f'proto-google-cloud-{service}-v2/src') library = gapic.java_library( service=service, version='v2beta1', config_path='/google/cloud/dialogflow/v2beta1/artman_dialogflow_v2beta1_java.yaml', artman_output_name='') package_name = f'com.google.cloud.{service}.v2beta1' java.fix_proto_headers(library / f'proto-google-cloud-{service}-v2beta1') java.fix_grpc_headers(library / f'grpc-google-cloud-{service}-v2beta1', package_name)
proto_targets = [ "api", "cloud/audit", "geo/type", "logging/type", "longrunning", "rpc", "rpc/context", "type" ] for path in proto_targets: target = path.replace("/", "-") target = f"google-{target}-java" library = gapic.java_library( service=target, version="unused", proto_path=f"google/{path}:", #google-iam-{version}-logging-java', bazel_target=f"//google/{path}:{target}", ) library = library / target java.fix_proto_headers(library / f"proto-{target}") s.copy(library / f"proto-{target}" / "src", "proto-google-common-protos/src", required=True) java.fix_grpc_headers(library / f"grpc-{target}", package_name=None) s.copy(library / f"grpc-{target}" / "src", "grpc-google-common-protos/src") java.format_code("proto-google-common-protos/src") java.format_code("grpc-google-common-protos/src") java.common_templates(excludes=[ 'README.md', 'samples/*', ])