def load_artifact_config(artman_config_path, artifact_name): artman_config = _read_artman_config(artman_config_path) artifact_config = Artifact() artifact_config.CopyFrom(artman_config.common) valid_values = [] for artifact in artman_config.artifacts: valid_values.append(artifact.name) if artifact.name == artifact_name: artifact_config.MergeFrom(artifact) _validate_artifact_config(artifact_config) return _normalize_artifact_config(artifact_config, artman_config_path) raise ValueError( 'No artifact with `%s` configured in artman yaml. Valid values are %s' % (artifact_name, valid_values))
def _compute_artifacts(legacy_config, legacy_common): result = [] LANGS = ['java', 'python', 'php', 'ruby', 'go', 'csharp', 'nodejs'] # Compute artifacts section common_git_repos = legacy_common.get('git_repos', {}) for lang in LANGS: if lang not in legacy_config: continue legacy_artifact_config = legacy_config[lang] if legacy_artifact_config: artifact = Artifact( # Name the artifact as `{lang}_gapic`. name='%s_gapic' % lang, language=Artifact.Language.Value(lang.upper()), ) if 'release_level' in legacy_artifact_config: artifact.release_level = Artifact.ReleaseLevel.Value( legacy_artifact_config.get('release_level').upper()) artifact.type = _compute_artifact_type(legacy_common) # Compute package version. if 'generated_package_version' in legacy_artifact_config: legacy_package_version = legacy_artifact_config.get( 'generated_package_version') if 'lower' in legacy_package_version: artifact.package_version.grpc_dep_lower_bound = ( legacy_package_version.get('lower')) if 'upper' in legacy_package_version: artifact.package_version.grpc_dep_upper_bound = ( legacy_package_version.get('upper')) # Compute publishing targets artifact.publish_targets.extend( _compute_publish_targets( legacy_artifact_config.get('git_repos', {}), common_git_repos)) result.append(artifact) return result
def _compute_artifacts(legacy_config, legacy_common): result = [] LANGS = ['java', 'python', 'php', 'ruby', 'go', 'csharp', 'nodejs'] # Compute artifacts section common_git_repos = legacy_common.get('git_repos', {}) for lang in LANGS: if lang not in legacy_config: continue legacy_artifact_config = legacy_config[lang] if legacy_artifact_config: artifact = Artifact( # Name the artifact as `{lang}_gapic`. name='%s_gapic' % lang, language=Artifact.Language.Value(lang.upper()), ) if 'release_level' in legacy_artifact_config: artifact.release_level = Artifact.ReleaseLevel.Value( legacy_artifact_config.get('release_level').upper()) artifact.type = _compute_artifact_type(legacy_common) # Compute package version. if 'generated_package_version' in legacy_artifact_config: legacy_package_version = legacy_artifact_config.get( 'generated_package_version') if 'lower' in legacy_package_version: artifact.package_version.grpc_dep_lower_bound = ( legacy_package_version.get('lower')) if 'upper' in legacy_package_version: artifact.package_version.grpc_dep_upper_bound = ( legacy_package_version.get('upper')) # Compute publishing targets artifact.publish_targets.extend(_compute_publish_targets( legacy_artifact_config.get('git_repos', {}), common_git_repos)) result.append(artifact) return result
def load_artifact_config(artman_config_path, artifact_name, aspect=None): artman_config = _read_artman_config(artman_config_path) artifact_config = Artifact() artifact_config.CopyFrom(artman_config.common) if artifact_name not in ARTIFACT_MAPPING: raise ValueError( 'Artifact type `%s` not supported. Valid values are %s' % (artifact_name, ARTIFACT_MAPPING.keys())) loaded_artifact = Artifact(**ARTIFACT_MAPPING[artifact_name]) for artifact in artman_config.artifacts: if artifact.name == artifact_name: loaded_artifact.MergeFrom(artifact) break if aspect: loaded_artifact.aspect = Artifact.Aspect.Value(aspect) artifact_config.MergeFrom(loaded_artifact) _validate_artifact_config(artifact_config) return _normalize_artifact_config( artifact_config, artman_config_path)
def _compute_publish_targets(git_repos, common_git_repos): # Merge the individual git_repos config with the common ones. for k, v in common_git_repos.items(): if k in git_repos: merged_entry = v.copy() merged_entry.update(git_repos[k]) git_repos[k] = merged_entry result = [] for k, v in git_repos.items(): target = Artifact.PublishTarget( name=k, location=v.get('location', ''), type=Artifact.PublishTarget.GITHUB, directory_mappings=_compute_directory_mappings(v.get('paths', []))) result.append(target) return result
def load_artifact_config(artman_config_path, artifact_name, aspect=None): artman_config = _read_artman_config(artman_config_path) artifact_config = Artifact() artifact_config.CopyFrom(artman_config.common) if artifact_name not in ARTIFACT_MAPPING: raise ValueError( 'Artifact type `%s` not supported. Valid values are %s' % (artifact_name, ARTIFACT_MAPPING.keys())) loaded_artifact = Artifact(**ARTIFACT_MAPPING[artifact_name]) for artifact in artman_config.artifacts: if artifact.name == artifact_name: loaded_artifact.MergeFrom(artifact) break if aspect: loaded_artifact.aspect = Artifact.Aspect.Value(aspect) artifact_config.MergeFrom(loaded_artifact) _validate_artifact_config(artifact_config) return _normalize_artifact_config(artifact_config, artman_config_path)
def _convert(legacy_config): # Compute common section result = Config() if 'common' not in legacy_config: sys.exit('`common` field is a required field in the legacy config.') legacy_common = legacy_config.get('common') result.common.api_name = legacy_common.get('api_name', 'unspecified') result.common.api_version = legacy_common.get('api_version', 'unspecified') result.common.organization_name = legacy_common.get( 'organization_name', 'unspecified') # Python dict#get(key, default=value) doesn't well support list-type field. # Instead of using defaultdict, simply do the if checking here. if legacy_common.get('gapic_api_yaml'): result.common.gapic_yaml = _sanitize_repl_var( legacy_common.get('gapic_api_yaml')[0]) if legacy_common.get('service_yaml'): result.common.service_yaml = _sanitize_repl_var( legacy_common.get('service_yaml')[0]) if legacy_common.get('proto_deps'): result.common.proto_deps.extend( _compute_deps(legacy_common.get('proto_deps'))) if legacy_common.get('proto_test_deps'): result.common.test_proto_deps.extend( _compute_deps(legacy_common.get('proto_test_deps'))) if legacy_common.get('src_proto_path'): result.common.src_proto_paths.extend( _compute_src_proto_paths(legacy_common.get('src_proto_path'))) artifacts = _compute_artifacts(legacy_config, legacy_common) # Append a gapic_config artifact. artifacts.append( Artifact( name='gapic_config', type=Artifact.GAPIC_CONFIG, )) result.artifacts.extend(artifacts) return result
def _compute_deps(proto_deps): result = [] for dep in proto_deps: result.append(Artifact.ProtoDependency(name=dep)) return result