1*6777b538SAndroid Build Coastguard Worker# Copyright 2015 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker"""A script to download files required for Remoting integration tests from GCS. 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker The script expects 2 parameters: 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker input_files: a file containing the full path in GCS to each file that is to 10*6777b538SAndroid Build Coastguard Worker be downloaded. 11*6777b538SAndroid Build Coastguard Worker output_folder: the folder to which the specified files should be downloaded. 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker This scripts expects that its execution is done on a machine where the 14*6777b538SAndroid Build Coastguard Worker credentials are correctly setup to obtain the required permissions for 15*6777b538SAndroid Build Coastguard Worker downloading files from the specified GCS buckets. 16*6777b538SAndroid Build Coastguard Worker""" 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Workerimport argparse 19*6777b538SAndroid Build Coastguard Workerimport ntpath 20*6777b538SAndroid Build Coastguard Workerimport os 21*6777b538SAndroid Build Coastguard Workerimport subprocess 22*6777b538SAndroid Build Coastguard Workerimport sys 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Workerdef main(): 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker parser = argparse.ArgumentParser() 28*6777b538SAndroid Build Coastguard Worker parser.add_argument('-f', '--files', 29*6777b538SAndroid Build Coastguard Worker help='File specifying files to be downloaded .') 30*6777b538SAndroid Build Coastguard Worker parser.add_argument( 31*6777b538SAndroid Build Coastguard Worker '-o', '--output_folder', 32*6777b538SAndroid Build Coastguard Worker help='Folder where specified files should be downloaded .') 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Worker if len(sys.argv) < 3: 35*6777b538SAndroid Build Coastguard Worker parser.print_help() 36*6777b538SAndroid Build Coastguard Worker sys.exit(1) 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker args = parser.parse_args() 39*6777b538SAndroid Build Coastguard Worker if not args.files or not args.output_folder: 40*6777b538SAndroid Build Coastguard Worker parser.print_help() 41*6777b538SAndroid Build Coastguard Worker sys.exit(1) 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker # Loop through lines in input file specifying source file locations. 44*6777b538SAndroid Build Coastguard Worker with open(args.files) as f: 45*6777b538SAndroid Build Coastguard Worker for line in f: 46*6777b538SAndroid Build Coastguard Worker # Copy the file to the output folder, with same name as source file. 47*6777b538SAndroid Build Coastguard Worker output_file = os.path.join(args.output_folder, ntpath.basename(line)) 48*6777b538SAndroid Build Coastguard Worker # Download specified file from GCS. 49*6777b538SAndroid Build Coastguard Worker cp_cmd = ['gsutil.py', 'cp', line, output_file] 50*6777b538SAndroid Build Coastguard Worker try: 51*6777b538SAndroid Build Coastguard Worker subprocess.check_call(cp_cmd) 52*6777b538SAndroid Build Coastguard Worker except subprocess.CalledProcessError as e: 53*6777b538SAndroid Build Coastguard Worker print(e.output) 54*6777b538SAndroid Build Coastguard Worker sys.exit(1) 55*6777b538SAndroid Build Coastguard Worker 56*6777b538SAndroid Build Coastguard Workerif __name__ == '__main__': 57*6777b538SAndroid Build Coastguard Worker main() 58