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
|
@ -27,6 +27,7 @@ from json import dumps
|
|||
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible import context
|
||||
from ansible.errors import AnsibleError, AnsibleOptionsError
|
||||
from ansible.module_utils.six import iteritems, string_types
|
||||
from ansible.module_utils._text import to_native, to_text
|
||||
|
@ -119,31 +120,30 @@ def merge_hash(a, b):
|
|||
return result
|
||||
|
||||
|
||||
def load_extra_vars(loader, options):
|
||||
def load_extra_vars(loader):
|
||||
extra_vars = {}
|
||||
if hasattr(options, 'extra_vars'):
|
||||
for extra_vars_opt in options.extra_vars:
|
||||
data = None
|
||||
extra_vars_opt = to_text(extra_vars_opt, errors='surrogate_or_strict')
|
||||
if extra_vars_opt.startswith(u"@"):
|
||||
# Argument is a YAML file (JSON is a subset of YAML)
|
||||
data = loader.load_from_file(extra_vars_opt[1:])
|
||||
elif extra_vars_opt and extra_vars_opt[0] in u'[{':
|
||||
# Arguments as YAML
|
||||
data = loader.load(extra_vars_opt)
|
||||
else:
|
||||
# Arguments as Key-value
|
||||
data = parse_kv(extra_vars_opt)
|
||||
for extra_vars_opt in context.CLIARGS.get('extra_vars', tuple()):
|
||||
data = None
|
||||
extra_vars_opt = to_text(extra_vars_opt, errors='surrogate_or_strict')
|
||||
if extra_vars_opt.startswith(u"@"):
|
||||
# Argument is a YAML file (JSON is a subset of YAML)
|
||||
data = loader.load_from_file(extra_vars_opt[1:])
|
||||
elif extra_vars_opt and extra_vars_opt[0] in u'[{':
|
||||
# Arguments as YAML
|
||||
data = loader.load(extra_vars_opt)
|
||||
else:
|
||||
# Arguments as Key-value
|
||||
data = parse_kv(extra_vars_opt)
|
||||
|
||||
if isinstance(data, MutableMapping):
|
||||
extra_vars = combine_vars(extra_vars, data)
|
||||
else:
|
||||
raise AnsibleOptionsError("Invalid extra vars data supplied. '%s' could not be made into a dictionary" % extra_vars_opt)
|
||||
if isinstance(data, MutableMapping):
|
||||
extra_vars = combine_vars(extra_vars, data)
|
||||
else:
|
||||
raise AnsibleOptionsError("Invalid extra vars data supplied. '%s' could not be made into a dictionary" % extra_vars_opt)
|
||||
|
||||
return extra_vars
|
||||
|
||||
|
||||
def load_options_vars(options, version):
|
||||
def load_options_vars(version):
|
||||
|
||||
options_vars = {'ansible_version': version}
|
||||
attrs = {'check': 'check_mode',
|
||||
|
@ -156,7 +156,7 @@ def load_options_vars(options, version):
|
|||
'verbosity': 'verbosity'}
|
||||
|
||||
for attr, alias in attrs.items():
|
||||
opt = getattr(options, attr, None)
|
||||
opt = context.CLIARGS.get(attr)
|
||||
if opt is not None:
|
||||
options_vars['ansible_%s' % alias] = opt
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue