diff --git a/generation_config.yaml b/generation_config.yaml index 08e4c37c00..e44757bc5a 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,4 +1,6 @@ googleapis_commitish: fbbbf5023815f9a662c85aa8af8f3b72467fcb6f +is_monorepo: true + # the libraries are ordered with respect to library name, which is # java-{library.library_name} or java-{library.api-shortname} when # library.library_name is not defined. diff --git a/hermetic_build/common/model/generation_config.py b/hermetic_build/common/model/generation_config.py index c8aaf6b2ad..5f7c63e0d9 100644 --- a/hermetic_build/common/model/generation_config.py +++ b/hermetic_build/common/model/generation_config.py @@ -25,6 +25,7 @@ COMMON_PROTOS_LIBRARY_NAME = "common-protos" GAPIC_GENERATOR_VERSION = "gapic_generator_version" LIBRARIES_BOM_VERSION = "libraries_bom_version" +IS_MONOREPO = "is_monorepo" GENERATOR_VERSION_ENV_KEY = "GENERATOR_VERSION" @@ -39,6 +40,7 @@ def __init__( libraries: list[LibraryConfig], gapic_generator_version: Optional[str] = None, libraries_bom_version: Optional[str] = None, + monorepo: Optional[bool] = False, ): self.googleapis_commitish = googleapis_commitish self.libraries_bom_version = ( @@ -48,6 +50,7 @@ def __init__( gapic_generator_version ) self.libraries = libraries + self.monorepo = monorepo # explicit set to None so that we can compute the # value in getter. self.__contains_common_protos = None @@ -66,7 +69,7 @@ def get_proto_path_to_library_name(self) -> dict[str, str]: return paths def is_monorepo(self) -> bool: - return len(self.libraries) > 1 + return self.monorepo def contains_common_protos(self) -> bool: if self.__contains_common_protos is None: @@ -169,6 +172,7 @@ def from_yaml(path_to_yaml: str) -> GenerationConfig: ), gapic_generator_version=__optional(config, GAPIC_GENERATOR_VERSION, None), libraries_bom_version=__optional(config, LIBRARIES_BOM_VERSION, None), + monorepo=__optional(config, IS_MONOREPO, False), libraries=parsed_libraries, ) diff --git a/hermetic_build/common/tests/model/generation_config_unit_tests.py b/hermetic_build/common/tests/model/generation_config_unit_tests.py index e769a9a723..19cade4de3 100644 --- a/hermetic_build/common/tests/model/generation_config_unit_tests.py +++ b/hermetic_build/common/tests/model/generation_config_unit_tests.py @@ -127,11 +127,21 @@ def test_is_monorepo_with_one_library_returns_false(self): ) self.assertFalse(config.is_monorepo()) + def test_is_monorepo_with_one_library_explicit_set_true(self): + config = GenerationConfig( + gapic_generator_version="", + googleapis_commitish="", + libraries=[library_1], + monorepo=True, + ) + self.assertTrue(config.is_monorepo()) + def test_is_monorepo_with_two_libraries_returns_true(self): config = GenerationConfig( gapic_generator_version="", googleapis_commitish="", libraries=[library_1, library_2], + monorepo=True, ) self.assertTrue(config.is_monorepo()) diff --git a/hermetic_build/library_generation/tests/resources/integration/google-cloud-java/generation_config.yaml b/hermetic_build/library_generation/tests/resources/integration/google-cloud-java/generation_config.yaml index d71f3863ec..8d94b0ba88 100644 --- a/hermetic_build/library_generation/tests/resources/integration/google-cloud-java/generation_config.yaml +++ b/hermetic_build/library_generation/tests/resources/integration/google-cloud-java/generation_config.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.38.1 googleapis_commitish: 4ce0ff67a3d4509be641cbe47a35844ddc1268fc libraries_bom_version: 26.37.0 +is_monorepo: true libraries: - api_shortname: apigeeconnect name_pretty: Apigee Connect diff --git a/hermetic_build/library_generation/tests/resources/integration/java-bigtable/generation_config.yaml b/hermetic_build/library_generation/tests/resources/integration/java-bigtable/generation_config.yaml index c6912c8125..9b07b6485f 100644 --- a/hermetic_build/library_generation/tests/resources/integration/java-bigtable/generation_config.yaml +++ b/hermetic_build/library_generation/tests/resources/integration/java-bigtable/generation_config.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.37.0 protoc_version: 25.2 googleapis_commitish: 9868a57470a969ffa1d21194a5c05d7a6e4e98cc +is_monorepo: false libraries: - api_shortname: bigtable name_pretty: Cloud Bigtable diff --git a/hermetic_build/library_generation/tests/resources/test-config/generation_config.yaml b/hermetic_build/library_generation/tests/resources/test-config/generation_config.yaml index 168c8fd9a5..e47bab1ea4 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/generation_config.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/generation_config.yaml @@ -2,6 +2,7 @@ gapic_generator_version: 2.34.0 protoc_version: 25.2 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: false libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/resources/test-config/generation_config_library_modified.yaml b/hermetic_build/library_generation/tests/resources/test-config/generation_config_library_modified.yaml index f9ae96693b..f420538e3b 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/generation_config_library_modified.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/generation_config_library_modified.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.34.0 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: false libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/resources/test-config/generation_config_with_duplicate_library_name.yaml b/hermetic_build/library_generation/tests/resources/test-config/generation_config_with_duplicate_library_name.yaml index c5613f4308..573c44c20c 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/generation_config_with_duplicate_library_name.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/generation_config_with_duplicate_library_name.yaml @@ -2,6 +2,7 @@ gapic_generator_version: 2.34.0 protoc_version: 25.2 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: true owlbot_cli_image: sha256:623647ee79ac605858d09e60c1382a716c125fb776f69301b72de1cd35d49409 synthtool_commitish: 6612ab8f3afcd5e292aecd647f0fa68812c9f5b5 template_excludes: diff --git a/hermetic_build/library_generation/tests/resources/test-config/monorepo_baseline.yaml b/hermetic_build/library_generation/tests/resources/test-config/monorepo_baseline.yaml index c2c4fd4a3b..9f4f8b83ed 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/monorepo_baseline.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/monorepo_baseline.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.34.0 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: true libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/resources/test-config/monorepo_current.yaml b/hermetic_build/library_generation/tests/resources/test-config/monorepo_current.yaml index 3ee2c8be2c..39bf4b9e32 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/monorepo_current.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/monorepo_current.yaml @@ -1,6 +1,7 @@ gapic_generator_version: 2.34.0 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: true libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/resources/test-config/monorepo_with_common_protos.yaml b/hermetic_build/library_generation/tests/resources/test-config/monorepo_with_common_protos.yaml index 6d4c94444a..c0e04a443a 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/monorepo_with_common_protos.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/monorepo_with_common_protos.yaml @@ -1,5 +1,6 @@ googleapis_commitish: 6a474b31c53cc1797710206824a17b364a835d2d gapic_generator_version: 2.34.0 +is_monorepo: true # the libraries are ordered with respect to library name, which is # java-{library.library_name} or java-{library.api-shortname} when # library.library_name is not defined. diff --git a/hermetic_build/library_generation/tests/resources/test-config/monorepo_without_common_protos.yaml b/hermetic_build/library_generation/tests/resources/test-config/monorepo_without_common_protos.yaml index ca21ccfb01..1fea7682ac 100644 --- a/hermetic_build/library_generation/tests/resources/test-config/monorepo_without_common_protos.yaml +++ b/hermetic_build/library_generation/tests/resources/test-config/monorepo_without_common_protos.yaml @@ -2,6 +2,7 @@ gapic_generator_version: 2.34.0 protoc_version: 25.2 googleapis_commitish: 1a45bf7393b52407188c82e63101db7dc9c72026 libraries_bom_version: 26.37.0 +is_monorepo: true libraries: - api_shortname: cloudasset name_pretty: Cloud Asset Inventory diff --git a/hermetic_build/library_generation/tests/utilities_unit_tests.py b/hermetic_build/library_generation/tests/utilities_unit_tests.py index a6796b706d..f9c51ef3db 100644 --- a/hermetic_build/library_generation/tests/utilities_unit_tests.py +++ b/hermetic_build/library_generation/tests/utilities_unit_tests.py @@ -343,10 +343,13 @@ def __get_a_gen_config( """ if combination == 1: libraries = [library_1] + monorepo = False elif combination == 2: libraries = [library_1, library_2] + monorepo = True else: libraries = [library_1, common_protos] + monorepo = True # update libraries with custom configuration (for now, only # library_type) @@ -363,6 +366,7 @@ def __get_a_gen_config( gapic_generator_version="", googleapis_commitish="", libraries=libraries, + monorepo=monorepo, ) @staticmethod