mirror of https://github.com/tLDP/python-tldp
support better handling of verbose CLI/config
now ldptool understands --verbose, --verbose yes, --verbose false
This commit is contained in:
parent
c0e477b5c7
commit
f5cb7c9e8b
130
tldp/config.py
130
tldp/config.py
|
@ -24,7 +24,7 @@ class DirectoriesExist(argparse._AppendAction):
|
||||||
|
|
||||||
def __call__(self, parser, namespace, values, option_string=None):
|
def __call__(self, parser, namespace, values, option_string=None):
|
||||||
if not os.path.isdir(values):
|
if not os.path.isdir(values):
|
||||||
message = "No such directory: %r for option %r, removing..."
|
message = "No such directory: %r for option %r, aborting..."
|
||||||
message = message % (values, option_string)
|
message = message % (values, option_string)
|
||||||
logger.critical(message)
|
logger.critical(message)
|
||||||
raise ValueError(message)
|
raise ValueError(message)
|
||||||
|
@ -37,76 +37,116 @@ class DirectoryExists(argparse._StoreAction):
|
||||||
|
|
||||||
def __call__(self, parser, namespace, values, option_string=None):
|
def __call__(self, parser, namespace, values, option_string=None):
|
||||||
if not os.path.isdir(values):
|
if not os.path.isdir(values):
|
||||||
message = "No such directory: %r for option %r, removing..."
|
message = "No such directory: %r for option %r, aborting..."
|
||||||
message = message % (values, option_string)
|
message = message % (values, option_string)
|
||||||
logger.critical(message)
|
logger.critical(message)
|
||||||
raise ValueError(message)
|
raise ValueError(message)
|
||||||
setattr(namespace, self.dest, values)
|
setattr(namespace, self.dest, values)
|
||||||
|
|
||||||
|
|
||||||
|
class StoreTrueOrNargBool(argparse._StoreAction):
|
||||||
|
|
||||||
|
_boolean_states = {'1': True, 'yes': True, 'true': True, 'on': True,
|
||||||
|
'0': False, 'no': False, 'false': False, 'off': False}
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(argparse._StoreAction, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def __call__(self, parser, namespace, values, option_string=None):
|
||||||
|
if values is None:
|
||||||
|
setattr(namespace, self.dest, True)
|
||||||
|
else:
|
||||||
|
boolval = self._boolean_states.get(values.lower(), None)
|
||||||
|
if boolval is None:
|
||||||
|
message = "Non-boolean value: %r for option %r, aborting..."
|
||||||
|
message = message % (values, option_string)
|
||||||
|
logger.critical(message)
|
||||||
|
raise ValueError(message)
|
||||||
|
else:
|
||||||
|
setattr(namespace, self.dest, boolval)
|
||||||
|
|
||||||
|
|
||||||
def collectconfiguration(tag, argv):
|
def collectconfiguration(tag, argv):
|
||||||
|
'''main specification of command-line (and config file) shape'''
|
||||||
|
|
||||||
ap = DefaultFreeArgumentParser()
|
ap = DefaultFreeArgumentParser()
|
||||||
|
|
||||||
g = ap.add_mutually_exclusive_group()
|
|
||||||
g.add_argument('--build',
|
|
||||||
'-b',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='build LDP documentation [%(default)s]')
|
|
||||||
g.add_argument('--publish',
|
|
||||||
'-p',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='build and publish LDP documentation [%(default)s]')
|
|
||||||
g.add_argument('--script',
|
|
||||||
'-S',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='dump runnable script [%(default)s]')
|
|
||||||
g.add_argument('--detail', '--list',
|
|
||||||
'-l',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='list elements of LDP system [%(default)s]')
|
|
||||||
g.add_argument('--summary',
|
|
||||||
'-t',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='dump inventory summary report [%(default)s]')
|
|
||||||
g.add_argument('--doctypes', '--formats', '--format',
|
|
||||||
'--list-doctypes', '--list-formats',
|
|
||||||
'-T',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='show supported doctypes [%(default)s]')
|
|
||||||
g.add_argument('--statustypes', '--list-statustypes',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='show status types and classes [%(default)s]')
|
|
||||||
|
|
||||||
ap.add_argument('--verbose',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='more info in --list/--detail [%(default)s]')
|
|
||||||
ap.add_argument('--loglevel',
|
|
||||||
default=logging.ERROR, type=arg_isloglevel,
|
|
||||||
help='set the loglevel')
|
|
||||||
ap.add_argument('--skip',
|
|
||||||
default=[], action='append', type=str,
|
|
||||||
help='skip this stem during processing')
|
|
||||||
ap.add_argument('--resources',
|
|
||||||
default=['images', 'resources'], action='append', type=str,
|
|
||||||
help='subdirs to copy during build [%(default)s]')
|
|
||||||
ap.add_argument('--sourcedir', '--source-dir', '--source-directory',
|
ap.add_argument('--sourcedir', '--source-dir', '--source-directory',
|
||||||
'-s',
|
'-s',
|
||||||
default=[], action=DirectoriesExist,
|
default=[], action=DirectoriesExist,
|
||||||
help='a directory containing LDP source documents')
|
help='a directory containing LDP source documents')
|
||||||
|
|
||||||
ap.add_argument('--pubdir', '--output', '--outputdir', '--outdir',
|
ap.add_argument('--pubdir', '--output', '--outputdir', '--outdir',
|
||||||
'-o',
|
'-o',
|
||||||
default=None, action=DirectoryExists,
|
default=None, action=DirectoryExists,
|
||||||
help='a directory containing LDP output documents')
|
help='a directory containing LDP output documents')
|
||||||
|
|
||||||
ap.add_argument('--builddir', '--build-dir', '--build-directory',
|
ap.add_argument('--builddir', '--build-dir', '--build-directory',
|
||||||
'-d',
|
'-d',
|
||||||
default=None, action=DirectoryExists,
|
default=None, action=DirectoryExists,
|
||||||
help='a scratch directory used for building')
|
help='a scratch directory used for building')
|
||||||
|
|
||||||
ap.add_argument('--configfile', '--config-file', '--cfg',
|
ap.add_argument('--configfile', '--config-file', '--cfg',
|
||||||
'-c',
|
'-c',
|
||||||
default=DEFAULT_CONFIGFILE,
|
default=DEFAULT_CONFIGFILE,
|
||||||
type=arg_isreadablefile,
|
type=arg_isreadablefile,
|
||||||
help='a configuration file')
|
help='a configuration file')
|
||||||
|
|
||||||
|
ap.add_argument('--loglevel',
|
||||||
|
default=logging.ERROR, type=arg_isloglevel,
|
||||||
|
help='set the loglevel')
|
||||||
|
|
||||||
|
ap.add_argument('--verbose',
|
||||||
|
action=StoreTrueOrNargBool, nargs='?', default=False,
|
||||||
|
help='more info in --list/--detail [%(default)s]')
|
||||||
|
|
||||||
|
ap.add_argument('--skip',
|
||||||
|
default=[], action='append', type=str,
|
||||||
|
help='skip this stem during processing')
|
||||||
|
|
||||||
|
ap.add_argument('--resources',
|
||||||
|
default=['images', 'resources'], action='append', type=str,
|
||||||
|
help='subdirs to copy during build [%(default)s]')
|
||||||
|
|
||||||
|
|
||||||
|
# -- and the distinct, mutually exclusive actions this script can perform
|
||||||
|
#
|
||||||
|
g = ap.add_mutually_exclusive_group()
|
||||||
|
g.add_argument('--publish',
|
||||||
|
'-p',
|
||||||
|
action='store_true', default=False,
|
||||||
|
help='build and publish LDP documentation [%(default)s]')
|
||||||
|
|
||||||
|
g.add_argument('--build',
|
||||||
|
'-b',
|
||||||
|
action='store_true', default=False,
|
||||||
|
help='build LDP documentation [%(default)s]')
|
||||||
|
|
||||||
|
g.add_argument('--script',
|
||||||
|
'-S',
|
||||||
|
action='store_true', default=False,
|
||||||
|
help='dump runnable script [%(default)s]')
|
||||||
|
|
||||||
|
g.add_argument('--detail', '--list',
|
||||||
|
'-l',
|
||||||
|
action='store_true', default=False,
|
||||||
|
help='list elements of LDP system [%(default)s]')
|
||||||
|
|
||||||
|
g.add_argument('--summary',
|
||||||
|
'-t',
|
||||||
|
action='store_true', default=False,
|
||||||
|
help='dump inventory summary report [%(default)s]')
|
||||||
|
|
||||||
|
g.add_argument('--doctypes', '--formats', '--format',
|
||||||
|
'--list-doctypes', '--list-formats',
|
||||||
|
'-T',
|
||||||
|
action='store_true', default=False,
|
||||||
|
help='show supported doctypes [%(default)s]')
|
||||||
|
|
||||||
|
g.add_argument('--statustypes', '--list-statustypes',
|
||||||
|
action='store_true', default=False,
|
||||||
|
help='show status types and classes [%(default)s]')
|
||||||
|
|
||||||
|
|
||||||
# -- collect up the distributed configuration fragments
|
# -- collect up the distributed configuration fragments
|
||||||
#
|
#
|
||||||
for cls in tldp.typeguesser.knowndoctypes:
|
for cls in tldp.typeguesser.knowndoctypes:
|
||||||
|
|
Loading…
Reference in New Issue