1*105f6285SAndroid Build Coastguard Worker"""Fetches artifacts from Android Build.""" 2*105f6285SAndroid Build Coastguard Workerimport argparse 3*105f6285SAndroid Build Coastguard Workerimport os 4*105f6285SAndroid Build Coastguard Worker 5*105f6285SAndroid Build Coastguard Workerfrom treble.fetcher import fetcher_lib 6*105f6285SAndroid Build Coastguard Worker 7*105f6285SAndroid Build Coastguard Worker 8*105f6285SAndroid Build Coastguard Workerdef main(): 9*105f6285SAndroid Build Coastguard Worker parser = argparse.ArgumentParser( 10*105f6285SAndroid Build Coastguard Worker description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) 11*105f6285SAndroid Build Coastguard Worker parser.add_argument( 12*105f6285SAndroid Build Coastguard Worker '--json_keyfile', 13*105f6285SAndroid Build Coastguard Worker help='JSON keyfile containing credentials. ' 14*105f6285SAndroid Build Coastguard Worker '(Default: Use default credential file)') 15*105f6285SAndroid Build Coastguard Worker parser.add_argument( 16*105f6285SAndroid Build Coastguard Worker '--target', required=True, help='The target name to download from.') 17*105f6285SAndroid Build Coastguard Worker parser.add_argument( 18*105f6285SAndroid Build Coastguard Worker '--artifact', 19*105f6285SAndroid Build Coastguard Worker action='append', 20*105f6285SAndroid Build Coastguard Worker default=[], 21*105f6285SAndroid Build Coastguard Worker help='The name of the artifact to download. ' 22*105f6285SAndroid Build Coastguard Worker 'Can be specified multiple times.') 23*105f6285SAndroid Build Coastguard Worker parser.add_argument( 24*105f6285SAndroid Build Coastguard Worker '--regex', 25*105f6285SAndroid Build Coastguard Worker action='append', 26*105f6285SAndroid Build Coastguard Worker default=[], 27*105f6285SAndroid Build Coastguard Worker help='A regex pattern to compare to the names of the artifact to ' 28*105f6285SAndroid Build Coastguard Worker 'download. Can be specified multiple times.') 29*105f6285SAndroid Build Coastguard Worker 30*105f6285SAndroid Build Coastguard Worker parser.add_argument( 31*105f6285SAndroid Build Coastguard Worker '--out_dir', 32*105f6285SAndroid Build Coastguard Worker default='out/artifacts/', 33*105f6285SAndroid Build Coastguard Worker help='Path to store fetched artifact to.') 34*105f6285SAndroid Build Coastguard Worker 35*105f6285SAndroid Build Coastguard Worker group = parser.add_mutually_exclusive_group(required=True) 36*105f6285SAndroid Build Coastguard Worker group.add_argument( 37*105f6285SAndroid Build Coastguard Worker '--branch', help='Download from the latest build of this branch.') 38*105f6285SAndroid Build Coastguard Worker group.add_argument('--build_id', help='Download from the specified build.') 39*105f6285SAndroid Build Coastguard Worker 40*105f6285SAndroid Build Coastguard Worker args = parser.parse_args() 41*105f6285SAndroid Build Coastguard Worker client = fetcher_lib.create_client_from_json_keyfile( 42*105f6285SAndroid Build Coastguard Worker json_keyfile_name=args.json_keyfile) 43*105f6285SAndroid Build Coastguard Worker 44*105f6285SAndroid Build Coastguard Worker build_id = fetcher_lib.get_latest_build_id( 45*105f6285SAndroid Build Coastguard Worker client=client, branch=args.branch, 46*105f6285SAndroid Build Coastguard Worker target=args.target) if args.branch else args.build_id 47*105f6285SAndroid Build Coastguard Worker 48*105f6285SAndroid Build Coastguard Worker for artifact in args.artifact: 49*105f6285SAndroid Build Coastguard Worker fetcher_lib.fetch_artifact( 50*105f6285SAndroid Build Coastguard Worker client=client, 51*105f6285SAndroid Build Coastguard Worker build_id=build_id, 52*105f6285SAndroid Build Coastguard Worker target=args.target, 53*105f6285SAndroid Build Coastguard Worker resource_id=artifact, 54*105f6285SAndroid Build Coastguard Worker dest=os.path.join(args.out_dir, artifact)) 55*105f6285SAndroid Build Coastguard Worker 56*105f6285SAndroid Build Coastguard Worker for re in args.regex: 57*105f6285SAndroid Build Coastguard Worker fetcher_lib.fetch_artifacts( 58*105f6285SAndroid Build Coastguard Worker client=client, 59*105f6285SAndroid Build Coastguard Worker build_id=build_id, 60*105f6285SAndroid Build Coastguard Worker target=args.target, 61*105f6285SAndroid Build Coastguard Worker pattern=re, 62*105f6285SAndroid Build Coastguard Worker out_dir=args.out_dir) 63*105f6285SAndroid Build Coastguard Worker 64*105f6285SAndroid Build Coastguard Worker 65*105f6285SAndroid Build Coastguard Workerif __name__ == '__main__': 66*105f6285SAndroid Build Coastguard Worker main() 67