def test_fix_proto_license(): with tempfile.TemporaryDirectory() as tempdir: temppath = Path(tempdir).resolve() os.mkdir(temppath / "src") shutil.copyfile("tests/testdata/src/foo/FooProto.java", temppath / "src/FooProto.java") java.fix_proto_headers(temppath) assert_matches_golden("tests/testdata/FooProtoGolden.java", temppath / "src/FooProto.java")
def build_proto(target): """Build a proto 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("*-speed-src.jar"): logger.debug(f"unzipping: {os.path.basename(proto_jar)}") shell.run(["unzip", "-o", proto_jar, "-d", src_output / "src"]) java.fix_proto_headers(src_output) s.copy(src_output / "src/com", "proto-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')
def generate_data_api(gapic, license): library = gapic.java_library( service='bigtable', version='v2', config_path='/google/bigtable/artman_bigtable.yaml', artman_output_name='') # 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.cloud.bigtable.v2' java.fix_proto_headers(library / f'proto-google-cloud-bigtable-v2') # java.fix_grpc_headers(library / f'grpc-google-cloud-bigtable-v2', package_name) ##todo replace with fix_grpc_headers s.replace(library / f'grpc-google-cloud-bigtable-v2/src/**/*.java', f"package com.google.bigtable.v2;", f"{license}package com.google.bigtable.v2;") s.copy(library / f'gapic-google-cloud-bigtable-v2', 'google-cloud-bigtable/', excludes=excludes) s.copy(library / f'grpc-google-cloud-bigtable-v2/src', f'grpc-google-cloud-bigtable-v2/src') s.copy(library / f'proto-google-cloud-bigtable-v2/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')
def generate_admin_api(gapic, license): library = gapic.java_library( service='bigtable-admin', version='v2', config_path='/google/bigtable/admin/artman_bigtableadmin.yaml', artman_output_name='') # 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.fix_grpc_headers(library / f'grpc-google-cloud-bigtable-admin-v2', package_name) ##todo replace with fix_grpc_headers s.replace(library / f'grpc-google-cloud-bigtable-admin-v2/src/**/*.java', f"package com.google.bigtable.admin.v2;", f"{license}package com.google.bigtable.admin.v2;") s.copy(library / f'gapic-google-cloud-bigtable-admin-v2/src', 'google-cloud-bigtable/src', excludes=excludes) s.copy(library / f'grpc-google-cloud-bigtable-admin-v2/src', f'grpc-google-cloud-bigtable-admin-v2/src') s.copy(library / f'proto-google-cloud-bigtable-admin-v2/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')
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()
import synthtool.gcp as gcp import synthtool.languages.java as java service = 'orgpolicy' versions = ['v1'] gapic = gcp.GAPICBazel() library = gapic.java_library( service=service, version='v1', proto_path=f'google/cloud/orgpolicy/v1', bazel_target=f'//google/cloud/orgpolicy/v1:google-cloud-orgpolicy-v1-java', ) library = library / f"google-cloud-orgpolicy-v1-java" java.fix_proto_headers(library / f"proto-google-cloud-orgpolicy-v1-java") s.copy( [library / f"proto-google-cloud-orgpolicy-v1-java/src"], f"proto-google-cloud-orgpolicy-v1/src", required=True, ) java.format_code(f"proto-google-cloud-orgpolicy-v1/src") java.pregenerated_library( service=service, version='v2', path=f'google/cloud/{service}/v2', ) java.common_templates(excludes=[ 'README.md', 'samples/*',
import synthtool.languages.java as java 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')
service = 'accesscontextmanager' versions = ['v1', 'type'] gapic = gcp.GAPICBazel() for version in versions: library = gapic.java_library( service=service, version=version, proto_path=f'google/identity/accesscontextmanager/{version}', bazel_target= f'//google/identity/accesscontextmanager/{version}:google-cloud-accesscontextmanager-{version}-java', ) library = library / f"google-cloud-accesscontextmanager-{version}-java" java.fix_proto_headers( library / f"proto-google-cloud-accesscontextmanager-{version}-java") s.copy( [ library / f"proto-google-cloud-accesscontextmanager-{version}-java/src" ], f"proto-google-identity-accesscontextmanager-{version}/src", required=True, ) java.format_code( f"proto-google-identity-accesscontextmanager-{version}/src") java.common_templates(excludes=[ 'README.md', 'samples/*', '.github/workflows/samples.yaml',
gapic = gcp.GAPICGenerator() service = 'cloudbuild' versions = ['v1'] config_pattern = '/google/devtools/cloudbuild/artman_cloudbuild.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.cloudbuild.{version}' java.fix_proto_headers(library / f'proto-google-cloud-build-{version}') java.fix_grpc_headers(library / f'grpc-google-cloud-build-{version}', package_name) s.copy(library / f'gapic-google-cloud-build-{version}/src', f'google-cloud-build/src') s.copy(library / f'grpc-google-cloud-build-{version}/src', f'grpc-google-cloud-build-{version}/src') s.copy(library / f'proto-google-cloud-build-{version}/src', f'proto-google-cloud-build-{version}/src') java.format_code(f'google-cloud-build/src') java.format_code(f'grpc-google-cloud-build-{version}/src') java.format_code(f'proto-google-cloud-build-{version}/src') common_templates = gcp.CommonTemplates()
import synthtool.languages.java as java 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/*', ])