summaryrefslogtreecommitdiff
path: root/hacking/build_library/build_ansible/command_plugins/plugin_formatter.py
diff options
context:
space:
mode:
Diffstat (limited to 'hacking/build_library/build_ansible/command_plugins/plugin_formatter.py')
-rw-r--r--hacking/build_library/build_ansible/command_plugins/plugin_formatter.py32
1 files changed, 29 insertions, 3 deletions
diff --git a/hacking/build_library/build_ansible/command_plugins/plugin_formatter.py b/hacking/build_library/build_ansible/command_plugins/plugin_formatter.py
index 4fcf99a1c9..6482e71fd7 100644
--- a/hacking/build_library/build_ansible/command_plugins/plugin_formatter.py
+++ b/hacking/build_library/build_ansible/command_plugins/plugin_formatter.py
@@ -346,11 +346,17 @@ def too_old(added):
return added_float < TOO_OLD_TO_BE_NOTABLE
-def process_options(module, options):
+def process_options(module, options, full_key=None):
option_names = []
+ if full_key is None:
+ full_key = []
if options:
for (k, v) in iteritems(options):
+ # Make sure that "full key" is contained
+ full_key_k = full_key + [k]
+ v['full_key'] = full_key_k
+
# Error out if there's no description
if 'description' not in v:
raise AnsibleError("Missing required description for parameter '%s' in '%s' " % (k, module))
@@ -376,9 +382,9 @@ def process_options(module, options):
if 'suboptions' in v and v['suboptions']:
if isinstance(v['suboptions'], dict):
- process_options(module, v['suboptions'])
+ process_options(module, v['suboptions'], full_key=full_key_k)
elif isinstance(v['suboptions'][0], dict):
- process_options(module, v['suboptions'][0])
+ process_options(module, v['suboptions'][0], full_key=full_key_k)
option_names.append(k)
@@ -387,6 +393,25 @@ def process_options(module, options):
return option_names
+def process_returndocs(returndocs, full_key=None):
+ if full_key is None:
+ full_key = []
+
+ if returndocs:
+ for (k, v) in iteritems(returndocs):
+ # Make sure that "full key" is contained
+ full_key_k = full_key + [k]
+ v['full_key'] = full_key_k
+
+ # Process suboptions
+ suboptions = v.get('contains')
+ if suboptions:
+ if isinstance(suboptions, dict):
+ process_returndocs(suboptions, full_key=full_key_k)
+ elif is_sequence(suboptions):
+ process_returndocs(suboptions[0], full_key=full_key_k)
+
+
def process_plugins(module_map, templates, outputname, output_dir, ansible_version, plugin_type):
for module_index, module in enumerate(module_map):
@@ -483,6 +508,7 @@ def process_plugins(module_map, templates, outputname, output_dir, ansible_versi
if module_map[module]['returndocs']:
try:
doc['returndocs'] = yaml.safe_load(module_map[module]['returndocs'])
+ process_returndocs(doc['returndocs'])
except Exception as e:
print("%s:%s:yaml error:%s:returndocs=%s" % (fname, module, e, module_map[module]['returndocs']))
doc['returndocs'] = None