mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 14:26:09 +03:00
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
|
# 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)
|