mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-04 23:44:00 -07:00
Save the command line arguments into a global context
* Once cli args are parsed, they're constant. So, save the parsed args into the global context for everyone else to use them from now on. * Port cli scripts to use the CLIARGS in the context * Refactor call to parse cli args into the run() method * Fix unittests for changes to the internals of CLI arg parsing * Port callback plugins to use context.CLIARGS * Got rid of the private self._options attribute * Use context.CLIARGS in the individual callback plugins instead. * Also output positional arguments in default and unixy plugins * Code has been simplified since we're now dealing with a dict rather than Optparse.Value
This commit is contained in:
parent
c18da65089
commit
afdbb0d9d5
36 changed files with 1033 additions and 868 deletions
|
@ -1,4 +1,4 @@
|
|||
# Copyright: (c) 2017, Ansible Project
|
||||
# Copyright: (c) 2017-2018, Ansible Project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
@ -10,6 +10,7 @@ import subprocess
|
|||
import sys
|
||||
import yaml
|
||||
|
||||
from ansible import context
|
||||
from ansible.cli import CLI
|
||||
from ansible.config.manager import ConfigManager, Setting, find_ini_config_file
|
||||
from ansible.errors import AnsibleError, AnsibleOptionsError
|
||||
|
@ -33,9 +34,9 @@ class ConfigCLI(CLI):
|
|||
self.config = None
|
||||
super(ConfigCLI, self).__init__(args, callback)
|
||||
|
||||
def parse(self):
|
||||
def init_parser(self):
|
||||
|
||||
self.parser = CLI.base_parser(
|
||||
self.parser = super(ConfigCLI, self).init_parser(
|
||||
usage="usage: %%prog [%s] [--help] [options] [ansible.cfg]" % "|".join(sorted(self.VALID_ACTIONS)),
|
||||
epilog="\nSee '%s <command> --help' for more information on a specific command.\n\n" % os.path.basename(sys.argv[0]),
|
||||
desc="View, edit, and manage ansible configuration.",
|
||||
|
@ -56,15 +57,20 @@ class ConfigCLI(CLI):
|
|||
elif self.action == "search":
|
||||
self.parser.set_usage("usage: %prog update [options] [-c ansible.cfg] <search term>")
|
||||
|
||||
self.options, self.args = self.parser.parse_args()
|
||||
display.verbosity = self.options.verbosity
|
||||
return self.parser
|
||||
|
||||
def post_process_args(self, options, args):
|
||||
super(ConfigCLI, self).post_process_args(options, args)
|
||||
display.verbosity = options.verbosity
|
||||
|
||||
return options, args
|
||||
|
||||
def run(self):
|
||||
|
||||
super(ConfigCLI, self).run()
|
||||
|
||||
if self.options.config_file:
|
||||
self.config_file = unfrackpath(self.options.config_file, follow=False)
|
||||
if context.CLIARGS['config_file']:
|
||||
self.config_file = unfrackpath(context.CLIARGS['config_file'], follow=False)
|
||||
self.config = ConfigManager(self.config_file)
|
||||
else:
|
||||
self.config = ConfigManager()
|
||||
|
@ -96,10 +102,10 @@ class ConfigCLI(CLI):
|
|||
raise AnsibleError("Option not implemented yet")
|
||||
|
||||
# pylint: disable=unreachable
|
||||
if self.options.setting is None:
|
||||
if context.CLIARGS['setting'] is None:
|
||||
raise AnsibleOptionsError("update option requires a setting to update")
|
||||
|
||||
(entry, value) = self.options.setting.split('=')
|
||||
(entry, value) = context.CLIARGS['setting'].split('=')
|
||||
if '.' in entry:
|
||||
(section, option) = entry.split('.')
|
||||
else:
|
||||
|
@ -164,7 +170,7 @@ class ConfigCLI(CLI):
|
|||
else:
|
||||
color = 'green'
|
||||
msg = "%s(%s) = %s" % (setting, 'default', defaults[setting].get('default'))
|
||||
if not self.options.only_changed or color == 'yellow':
|
||||
if not context.CLIARGS['only_changed'] or color == 'yellow':
|
||||
text.append(stringc(msg, color))
|
||||
|
||||
self.pager(to_text('\n'.join(text), errors='surrogate_or_strict'))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue