"""Fetches artifacts from Android Build.""" import argparse import os from treble.fetcher import fetcher_lib def main(): parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument( '--json_keyfile', help='JSON keyfile containing credentials. ' '(Default: Use default credential file)') parser.add_argument( '--target', required=True, help='The target name to download from.') parser.add_argument( '--artifact', action='append', default=[], help='The name of the artifact to download. ' 'Can be specified multiple times.') parser.add_argument( '--regex', action='append', default=[], help='A regex pattern to compare to the names of the artifact to ' 'download. Can be specified multiple times.') parser.add_argument( '--out_dir', default='out/artifacts/', help='Path to store fetched artifact to.') group = parser.add_mutually_exclusive_group(required=True) group.add_argument( '--branch', help='Download from the latest build of this branch.') group.add_argument('--build_id', help='Download from the specified build.') args = parser.parse_args() client = fetcher_lib.create_client_from_json_keyfile( json_keyfile_name=args.json_keyfile) build_id = fetcher_lib.get_latest_build_id( client=client, branch=args.branch, target=args.target) if args.branch else args.build_id for artifact in args.artifact: fetcher_lib.fetch_artifact( client=client, build_id=build_id, target=args.target, resource_id=artifact, dest=os.path.join(args.out_dir, artifact)) for re in args.regex: fetcher_lib.fetch_artifacts( client=client, build_id=build_id, target=args.target, pattern=re, out_dir=args.out_dir) if __name__ == '__main__': main()