summaryrefslogtreecommitdiffstats
path: root/bin/ansible-doc
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ansible-doc')
-rwxr-xr-xbin/ansible-doc45
1 files changed, 34 insertions, 11 deletions
diff --git a/bin/ansible-doc b/bin/ansible-doc
index 8a7faadb24..3c4f84964a 100755
--- a/bin/ansible-doc
+++ b/bin/ansible-doc
@@ -164,7 +164,11 @@ def get_snippet_text(doc):
return "\n".join(text)
def get_module_list_text(module_list):
+ columns = max(60, int(os.popen('stty size', 'r').read().split()[1]))
+ displace = max(len(x) for x in module_list)
+ linelimit = columns - displace - 5
text = []
+ deprecated = []
for module in sorted(set(module_list)):
if module in module_docs.BLACKLIST_MODULES:
@@ -181,13 +185,22 @@ def get_module_list_text(module_list):
try:
doc, plainexamples = module_docs.get_docstring(filename)
- desc = tty_ify(doc.get('short_description', '?'))
- if len(desc) > 55:
- desc = desc + '...'
- text.append("%-20s %-60.60s" % (module, desc))
+ desc = tty_ify(doc.get('short_description', '?')).strip()
+ if len(desc) > linelimit:
+ desc = desc[:linelimit] + '...'
+
+ if module.startswith('_'): # Handle replecated
+ module = module[1:]
+ deprecated.append("%-*s %-*.*s" % (displace, module, linelimit, len(desc), desc))
+ else:
+ text.append("%-*s %-*.*s" % (displace, module, linelimit, len(desc), desc))
except:
traceback.print_exc()
sys.stderr.write("ERROR: module %s has a documentation error formatting or is missing documentation\n" % module)
+
+ if len(deprecated) > 0:
+ text.append("\nDEPRECATED:")
+ text.extend(deprecated)
return "\n".join(text)
def main():
@@ -208,6 +221,11 @@ def main():
default=False,
dest='list_dir',
help='List available modules')
+ p.add_option("-c", "--list-columns",
+ action="store_true",
+ default=False,
+ dest='list_columns',
+ help='List modules in columns')
p.add_option("-s", "--snippet",
action="store_true",
default=False,
@@ -221,20 +239,25 @@ def main():
for i in options.module_path.split(os.pathsep):
utils.plugins.module_finder.add_directory(i)
- if options.list_dir:
- # list all modules
+ if options.list_dir or options.list_deprecated:
+ # list modules
paths = utils.plugins.module_finder._get_paths()
module_list = []
- deprecated_list = []
- module_aliases = {}
for path in paths:
- # os.system("ls -C %s" % (path))
if os.path.isdir(path):
for module in os.listdir(path):
- if module.startswith('_') or any(module.endswith(x) for x in BLACKLIST_EXTS):
+ if any(module.endswith(x) for x in BLACKLIST_EXTS):
continue
- module_list.append(module)
+ elif module.startswith('__'):
+ 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
+ module_list.append(module)
+
pager(get_module_list_text(module_list))
sys.exit()