From 43785aa24622377a11ddef9bd5f70e734782ced7 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Fri, 9 Dec 2016 16:17:48 -0700 Subject: [PATCH] Add --all option to ansible-doc. --- lib/ansible/cli/doc.py | 43 +++++++++++++++++++------------- lib/ansible/utils/module_docs.py | 1 - 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py index 08e782e30e7..d61cdb7eb1c 100644 --- a/lib/ansible/cli/doc.py +++ b/lib/ansible/cli/doc.py @@ -59,6 +59,8 @@ class DocCLI(CLI): help='List available modules') self.parser.add_option("-s", "--snippet", action="store_true", default=False, dest='show_snippet', help='Show playbook snippet for specified module(s)') + self.parser.add_option("-a", "--all", action="store_true", default=False, dest='all_modules', + help='Show documentation for all modules') super(DocCLI, self).parse() @@ -81,6 +83,13 @@ class DocCLI(CLI): self.pager(self.get_module_list_text()) return 0 + # process all modules + if self.options.all_modules: + paths = module_loader._get_paths() + for path in paths: + self.find_modules(path) + self.args = sorted(set(self.module_list) - module_docs.BLACKLIST_MODULES) + if len(self.args) == 0: raise AnsibleOptionsError("Incorrect options passed") @@ -143,26 +152,26 @@ class DocCLI(CLI): return 0 def find_modules(self, path): + for module in os.listdir(path): + full_path = '/'.join([path, module]) - if os.path.isdir(path): - for module in os.listdir(path): - if module.startswith('.'): + if module.startswith('.'): + continue + elif os.path.isdir(full_path): + continue + elif any(module.endswith(x) for x in C.BLACKLIST_EXTS): + continue + elif module.startswith('__'): + continue + elif module in C.IGNORE_FILES: + continue + elif module.startswith('_'): + if os.path.islink(full_path): # avoids aliases continue - elif os.path.isdir(module): - self.find_modules(module) - elif any(module.endswith(x) for x in C.BLACKLIST_EXTS): - continue - elif module.startswith('__'): - continue - elif module in C.IGNORE_FILES: - continue - elif module.startswith('_'): - fullpath = '/'.join([path,module]) - if os.path.islink(fullpath): # avoids aliases - continue - module = os.path.splitext(module)[0] # removes the extension - self.module_list.append(module) + module = os.path.splitext(module)[0] # removes the extension + module = module.lstrip('_') # remove underscore from deprecated modules + self.module_list.append(module) def get_module_list_text(self): columns = display.columns diff --git a/lib/ansible/utils/module_docs.py b/lib/ansible/utils/module_docs.py index 7f7217fa2ec..36d8ccbcf72 100755 --- a/lib/ansible/utils/module_docs.py +++ b/lib/ansible/utils/module_docs.py @@ -41,7 +41,6 @@ except ImportError: # modules that are ok that they do not have documentation strings BLACKLIST_MODULES = frozenset(( 'async_wrapper', - 'accelerate', )) def get_docstring(filename, verbose=False):