diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-01-17 10:00:20 -0500 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-01-17 10:00:20 -0500 |
commit | 41cfeba3ec2f4287dc1294a2c421e64f7b1224f8 (patch) | |
tree | dd176d58195505339c5f38dbc8604cef7bdb8c49 /src/lib/Bcfg2 | |
parent | f45551e656bc9a7894ddbf4412263e9045e73154 (diff) | |
download | bcfg2-41cfeba3ec2f4287dc1294a2c421e64f7b1224f8.tar.gz bcfg2-41cfeba3ec2f4287dc1294a2c421e64f7b1224f8.tar.bz2 bcfg2-41cfeba3ec2f4287dc1294a2c421e64f7b1224f8.zip |
Options: split loading a new OptionParser from fetching an existing parser
Diffstat (limited to 'src/lib/Bcfg2')
-rw-r--r-- | src/lib/Bcfg2/Options.py | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py index 780619f3b..4818c67f9 100644 --- a/src/lib/Bcfg2/Options.py +++ b/src/lib/Bcfg2/Options.py @@ -1256,16 +1256,12 @@ class OptionParser(OptionSet): _PARSER = None -def get_option_parser(args=None, argv=None, quiet=False): - """ Get an OptionParser object. If :attr:`_PARSER` already - exists, that will be used; if not, a new OptionParser object will - be created. +def load_option_parser(args, argv=None, quiet=False): + """ Load an :class:`Bcfg2.Options.OptionParser` object, caching it + in :attr:`_PARSER` for later retrieval via + :func:`get_option_parser`. - If ``args`` or ``argv`` are given, then a new OptionParser object - will be instantiated regardless of whether one already exists. - - :param args: The argument set to parse. This is required on the - first invocation of :func:`get_option_parser`. + :param args: The argument set to parse. :type args: dict of :class:`Bcfg2.Options.Option` objects :param argv: The command-line argument list. If this is not provided, :attr:`sys.argv` will be used. @@ -1275,8 +1271,17 @@ def get_option_parser(args=None, argv=None, quiet=False): :returns: :class:`Bcfg2.Options.OptionParser` """ global _PARSER # pylint: disable=W0603 - if _PARSER is None or args is not None or argv is not None: - if args is None: - args = CLI_COMMON_OPTIONS - _PARSER = OptionParser(args, argv=argv, quiet=quiet) + _PARSER = OptionParser(args, argv=argv, quiet=quiet) + return _PARSER + + +def get_option_parser(): + """ Get an already-created :class:`Bcfg2.Options.OptionParser` object. If + :attr:`_PARSER` has not been populated, then a new OptionParser + will be created with basic arguments. + + :returns: :class:`Bcfg2.Options.OptionParser` + """ + if _PARSER is None: + return load_option_parser(CLI_COMMON_OPTIONS) return _PARSER |