diff --git a/utilities/batch_generate_apis.py b/utilities/batch_generate_apis.py index 175668c9e996..3ac9cfe6acde 100644 --- a/utilities/batch_generate_apis.py +++ b/utilities/batch_generate_apis.py @@ -96,6 +96,8 @@ def main(): help='The path to the discovery-artifact-manager repo') args = parser.parse_args() + generate_api.dump_versions(googleapis=args.googleapis, discovery_repo=args.discovery_repo) + run_gapic_gen(args.googleapis) run_discogapic_gen(args.discovery_repo) diff --git a/utilities/generate_api.py b/utilities/generate_api.py index 8ea63024fb07..19847ba109fd 100644 --- a/utilities/generate_api.py +++ b/utilities/generate_api.py @@ -20,8 +20,10 @@ # $ python utilities/generate_api.py PATH_TO_ARTMAN_CONFIG_FILE ARTIFACT_NAME import argparse +import collections import io import os +import re import shutil import subprocess @@ -40,6 +42,37 @@ JAVA_GAPIC="java_gapic" JAVA_DISCOGAPIC="java_discogapic" +def get_git_repo_version(path): + commit = subprocess.check_output(['git', '-C', path, 'rev-parse', 'HEAD']).strip() + suffix = '' + + changes = subprocess.check_output(['git', '-C', path, 'diff', '--stat']) + + if changes: + suffix = " ({})".format(changes.splitlines()[-1]) + + return ''.join([commit, suffix]) + + +def dump_versions(googleapis=None, discovery_repo=None): + print("Component versions:") + + print(subprocess.check_output(['artman', '--version'], stderr=subprocess.STDOUT).strip()) + + with io.open(os.path.expanduser("~/.artman/config.yaml"), encoding='UTF-8') as config_file: + artman_config_data = yaml.load(config_file, Loader=yaml.Loader) + toolkit_path = artman_config_data['local']['toolkit'] + print("gapic_generator {}".format(get_git_repo_version(toolkit_path))) + + print("google-cloud-java {}".format(get_git_repo_version(os.path.dirname(__file__)))) + + if googleapis: + print("googleapis {}".format(get_git_repo_version(googleapis))) + + if discovery_repo: + print("discovery_repo {}".format(get_git_repo_version(discovery_repo))) + + def run_generate_api(config_path, artifact_name, noisy=False): """ Generate an API client library. @@ -138,6 +171,9 @@ def main(): help='Don\'t print informational instructions') args = parser.parse_args() + if not args.quiet: + dump_versions(googleapis=os.path.dirname(args.config_file)) + run_generate_api(args.config_file, args.artifact_name, not args.quiet) if __name__ == '__main__':