Chromium Code Reviews| Index: build/copy_test_data.py |
| diff --git a/build/copy_test_data.py b/build/copy_test_data.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..feb12e5cf4410656d1384fa00754fbfe8f89ad3b |
| --- /dev/null |
| +++ b/build/copy_test_data.py |
| @@ -0,0 +1,85 @@ |
| +#!/usr/bin/env python |
|
pkl (ping after 24h if needed)
2012/07/16 17:15:34
google3 python files do *not* require shebang line
|
| +# Copyright (c) 2012 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. |
| + |
| +"""Copies test data files into an iOS app bundle.""" |
| + |
| +import optparse |
| +import os |
| +import shutil |
| +import sys |
| + |
| +class WrongNumberOfArgumentsException(Exception): |
| + pass |
| + |
| +def ExpandFilesForPath(path): |
| + output = [] |
| + # Files get returned without modification. |
| + if not os.path.isdir(path): |
| + output.append(path) |
| + return output |
| + |
| + # Directories get recursively expanded. |
| + contents = os.listdir(path) |
| + for item in contents: |
| + full_path = os.path.join(path, item) |
| + output.extend(ExpandFilesForPath(full_path)) |
| + return output |
| + |
| +def CalcInputs(inputs): |
| + # Inputs is a list of possibly-space-separated strings. Break apart the list |
|
pkl (ping after 24h if needed)
2012/07/16 17:15:34
Use triple-" for function doc strings.
|
| + # and tokenize the string. |
| + output = [] |
| + for input in inputs: |
| + tokens = input.split() |
| + for token in tokens: |
| + output.extend(ExpandFilesForPath(token)) |
| + return output |
| + |
| +def CopyFiles(relative_filenames, output_basedir): |
| + for file in relative_filenames: |
| + relative_dirname = os.path.dirname(file) |
|
pkl (ping after 24h if needed)
2012/07/16 17:15:34
indent 2
|
| + output_dir = os.path.join(output_basedir, relative_dirname) |
| + if not os.path.exists(output_dir): |
| + os.makedirs(output_dir) |
| + output_filename = os.path.join(output_basedir, file) |
| + shutil.copy(file, output_filename) |
| + |
| +def DoMain(argv): |
| + parser = optparse.OptionParser() |
| + usage = 'Usage: %prog -o <output_dir> [--inputs] [--outputs] <input_files>' |
| + parser.set_usage(usage) |
| + parser.add_option('-o', dest='output_dir') |
| + parser.add_option('--inputs', action='store_true', dest='list_inputs') |
| + parser.add_option('--outputs', action='store_true', dest='list_outputs') |
| + options, arglist = parser.parse_args(argv) |
| + |
| + if len(arglist) == 0: |
| + raise WrongNumberOfArgumentsException("<input_files> required.") |
|
pkl (ping after 24h if needed)
2012/07/16 17:15:34
single quote strings.
|
| + |
| + files_to_copy = CalcInputs(arglist) |
| + if options.list_inputs: |
| + return '\n'.join(files_to_copy) |
| + |
| + if not options.output_dir: |
| + raise WrongNumberOfArgumentsException("-o required.") |
| + |
| + if options.list_outputs: |
| + outputs = [os.path.join(options.output_dir, x) for x in files_to_copy] |
| + return '\n'.join(outputs) |
| + |
| + CopyFiles(files_to_copy, options.output_dir) |
| + return 0 |
| + |
| +def main(argv): |
| + try: |
| + result = DoMain(argv[1:]) |
| + except WrongNumberOfArguments, e: |
| + print >>sys.stderr, e |
| + return 1 |
| + print result |
| + return 0 |
| + |
| +if __name__ == '__main__': |
| + sys.exit(main(sys.argv)) |