ansible-doc: export has_action when --json is used (#72359) (#72414)

* ansible-doc: export has_action when --json is used.
* Remove docuri and now_data, which were not used resp. ignored in format_plugin_doc and the functions it calls anyway.
* Add function _combine_plugin_doc.

(cherry picked from commit 4fb336cef1)
This commit is contained in:
Felix Fontein 2020-12-07 23:59:33 +01:00 committed by GitHub
parent 27f547b4d3
commit 42da480721
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 14 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- "ansible-doc - provide ``has_action`` field in JSON output for modules. That information is currently only available in the text view (https://github.com/ansible/ansible/pull/72359)."

View file

@ -259,7 +259,7 @@ class DocCLI(CLI):
# The doc section existed but was empty
continue
plugin_docs[plugin] = {'doc': doc, 'examples': plainexamples, 'return': returndocs, 'metadata': metadata}
plugin_docs[plugin] = DocCLI._combine_plugin_doc(plugin, plugin_type, doc, plainexamples, returndocs, metadata)
if do_json:
jdump(plugin_docs)
@ -354,6 +354,19 @@ class DocCLI(CLI):
doc['collection'] = collection_name
return doc, plainexamples, returndocs, metadata
@staticmethod
def _combine_plugin_doc(plugin, plugin_type, doc, plainexamples, returndocs, metadata):
# generate extra data
if plugin_type == 'module':
# is there corresponding action plugin?
if plugin in action_loader:
doc['has_action'] = True
else:
doc['has_action'] = False
# return everything as one dictionary
return {'doc': doc, 'examples': plainexamples, 'return': returndocs, 'metadata': metadata}
@staticmethod
def format_plugin_doc(plugin, plugin_type, doc, plainexamples, returndocs, metadata):
collection_name = doc['collection']
@ -369,18 +382,6 @@ class DocCLI(CLI):
doc['returndocs'] = returndocs
doc['metadata'] = metadata
# generate extra data
if plugin_type == 'module':
# is there corresponding action plugin?
if plugin in action_loader:
doc['action'] = True
else:
doc['action'] = False
doc['now_date'] = datetime.date.today().strftime('%Y-%m-%d')
if 'docuri' in doc:
doc['docuri'] = doc[plugin_type].replace('_', '-')
if context.CLIARGS['show_snippet'] and plugin_type == 'module':
text = DocCLI.get_snippet_text(doc)
else:
@ -658,7 +659,7 @@ class DocCLI(CLI):
text.append("%s" % doc.pop('deprecated'))
text.append("\n")
if doc.pop('action', False):
if doc.pop('has_action', False):
text.append(" * note: %s\n" % "This module has a corresponding action plugin.")
if doc.get('options', False):