Chromium Code Reviews| Index: build/android/gyp/manifest.py |
| diff --git a/build/android/gyp/manifest.py b/build/android/gyp/manifest.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..fbc6bda298cfe766e7b6f8d687f5f16e3897b8bc |
| --- /dev/null |
| +++ b/build/android/gyp/manifest.py |
| @@ -0,0 +1,69 @@ |
| +#!/usr/bin/env python |
| +# Copyright 2014 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. |
|
cjhopman
2014/09/15 22:27:36
Could you add a docstring here (something really s
jbudorick
2014/09/16 02:50:41
Manifest functionality moved into javac.py. Added
|
| + |
| +import argparse |
| +import os |
| +import sys |
| + |
| +_MAX_LINE_LEN = 72 |
| + |
| +def _wrap(str_to_wrap): |
| + """Wraps lines according to manifest requirements. |
| + |
| + Java requires that lines in a manifest file be no longer than |
| + 72 characters and that wrapped lines begin with a space. |
| + |
| + Args: |
| + str_to_wrap: the string to wrap. |
| + Returns: |
| + The wrapped string. |
| + """ |
| + output = [] |
|
cjhopman
2014/09/15 22:27:36
could probably use textwrap
return '\r\n'.join(te
jbudorick
2014/09/16 02:50:41
Didn't realize this existed. Nice.
|
| + for line in str_to_wrap.splitlines(): |
| + s = ([0] + range(_MAX_LINE_LEN - 2, len(line), _MAX_LINE_LEN - 3) |
| + + [len(line)]) |
| + lsplit = [line[s[i]:s[i+1]] for i in xrange(len(s) - 1)] |
| + output.append('\r\n '.join(lsplit)) |
| + return '\r\n'.join(output) |
| + |
| +def main(): |
| + parser = argparse.ArgumentParser( |
| + description='Generate a manifest file for a JAR.') |
| + parser.add_argument('--main-class', dest='main_class', |
|
cjhopman
2014/09/15 22:27:36
Is there a reason to not just infer dest from the
jbudorick
2014/09/16 02:50:41
Nope. I think I was in the habit of being explicit
|
| + help='The class containing the main method.') |
| + parser.add_argument('--classpath', help='The JAR\'s classpath.') |
| + parser.add_argument('--output-file', dest='output_file', |
| + help='The output manifest file path.') |
| + args = parser.parse_args() |
| + |
| + try: |
| + output = ['Manifest-Version: 1.0'] |
| + if args.main_class: |
| + output.append('Main-Class: %s' % args.main_class) |
| + if args.classpath: |
| + paths = args.classpath.split() |
| + sanitized_paths = [] |
| + for path in paths: |
| + sanitized_paths.append(os.path.basename(path.strip('"'))) |
| + output.append('Class-Path: %s' % ' '.join(sanitized_paths)) |
| + output.append('Created-By: ') |
| + output.append('') |
| + |
| + output = _wrap('\r\n'.join(output)) |
| + |
| + if args.output_file: |
| + with open(args.output_file, 'w') as f: |
| + f.write(output) |
| + else: |
| + sys.stdout.write(output) |
| + except Exception as e: |
| + print 'Error while writing JAR manifest file: %s' % str(e) |
| + return 1 |
| + |
| + return 0 |
| + |
| +if __name__ == '__main__': |
| + sys.exit(main()) |
| + |