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")
示例#2
0
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")
示例#3
0
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')
示例#4
0
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')
示例#5
0
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')
示例#6
0
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')
示例#7
0
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()
示例#8
0
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/*',
示例#9
0
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',
示例#10
0
# 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")
示例#11
0
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',
示例#13
0
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()
示例#14
0
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)
示例#15
0
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/*',
])