Index: build/android/pylib/utils/argparse_utils.py |
diff --git a/build/android/pylib/utils/argparse_utils.py b/build/android/pylib/utils/argparse_utils.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e456d9ddab0bde6160d833848be5a0d589ffbfc7 |
--- /dev/null |
+++ b/build/android/pylib/utils/argparse_utils.py |
@@ -0,0 +1,50 @@ |
+# Copyright 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. |
+ |
+import argparse |
+ |
+ |
+class CustomHelpAction(argparse.Action): |
+ '''Allows defining custom help actions. |
+ |
+ Help actions can run even when the parser would otherwise fail on missing |
+ arguments. The first help or custom help command mentioned on the command |
+ line will have its help text displayed. |
+ |
+ Usage: |
+ parser = argparse.ArgumentParser(...) |
+ CustomHelpAction.EnableFor(parser) |
+ parser.add_argument('--foo-help', |
+ action='custom_help', |
+ custom_help_text='this is the help message', |
+ help='What this helps with') |
+ ''' |
+ # Derived from argparse._HelpAction from |
+ # https://github.com/python/cpython/blob/master/Lib/argparse.py |
+ |
+ # pylint: disable=redefined-builtin |
+ # (complains about 'help' being redefined) |
+ def __init__(self, |
+ option_strings, |
+ dest=argparse.SUPPRESS, |
+ default=argparse.SUPPRESS, |
+ custom_help_text=None, |
+ help=None): |
+ super(CustomHelpAction, self).__init__(option_strings=option_strings, |
+ dest=dest, |
+ default=default, |
+ nargs=0, |
+ help=help) |
+ |
+ if not custom_help_text: |
+ raise ValueError('custom_help_text is required') |
+ self._help_text = custom_help_text |
+ |
+ def __call__(self, parser, namespace, values, option_string=None): |
+ print self._help_text |
+ parser.exit() |
+ |
+ @staticmethod |
+ def EnableFor(parser): |
+ parser.register('action', 'custom_help', CustomHelpAction) |