|  | # Copyright (c) 2015 The Chromium Authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | """A script to download files required for Remoting integration tests from GCS. | 
|  |  | 
|  | The script expects 2 parameters: | 
|  |  | 
|  | input_files: a file containing the full path in GCS to each file that is to | 
|  | be downloaded. | 
|  | output_folder: the folder to which the specified files should be downloaded. | 
|  |  | 
|  | This scripts expects that its execution is done on a machine where the | 
|  | credentials are correctly setup to obtain the required permissions for | 
|  | downloading files from the specified GCS buckets. | 
|  | """ | 
|  |  | 
|  | import argparse | 
|  | import ntpath | 
|  | import os | 
|  | import subprocess | 
|  | import sys | 
|  |  | 
|  |  | 
|  | def main(): | 
|  |  | 
|  | parser = argparse.ArgumentParser() | 
|  | parser.add_argument('-f', '--files', | 
|  | help='File specifying files to be downloaded .') | 
|  | parser.add_argument( | 
|  | '-o', '--output_folder', | 
|  | help='Folder where specified files should be downloaded .') | 
|  |  | 
|  | if len(sys.argv) < 3: | 
|  | parser.print_help() | 
|  | sys.exit(1) | 
|  |  | 
|  | args = parser.parse_args() | 
|  | if not args.files or not args.output_folder: | 
|  | parser.print_help() | 
|  | sys.exit(1) | 
|  |  | 
|  | # Loop through lines in input file specifying source file locations. | 
|  | with open(args.files) as f: | 
|  | for line in f: | 
|  | # Copy the file to the output folder, with same name as source file. | 
|  | output_file = os.path.join(args.output_folder, ntpath.basename(line)) | 
|  | # Download specified file from GCS. | 
|  | cp_cmd = ['gsutil.py', 'cp', line, output_file] | 
|  | try: | 
|  | subprocess.check_call(cp_cmd) | 
|  | except subprocess.CalledProcessError, e: | 
|  | print e.output | 
|  | sys.exit(1) | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | main() |