summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorBrian Coca <brian.coca+git@gmail.com>2014-11-01 01:17:42 -0400
committerBrian Coca <brian.coca+git@gmail.com>2014-11-01 01:17:42 -0400
commit7a5e7db2df04c6c673b9d715b052503e49cdb6cf (patch)
tree4153d9a6cb9786bd02d09ad2443906c403b21ba5 /bin
parentf6d9aa7a8ffcd97bb4cdd22871735a694ea7024a (diff)
downloadansible-7a5e7db2df04c6c673b9d715b052503e49cdb6cf.tar.gz
ansible doc now finds modules recursively
more intelligent about ignoring files that are clearly not modules
Diffstat (limited to 'bin')
-rwxr-xr-xbin/ansible-doc48
1 files changed, 29 insertions, 19 deletions
diff --git a/bin/ansible-doc b/bin/ansible-doc
index aed7d4d23c..0ba84b9a30 100755
--- a/bin/ansible-doc
+++ b/bin/ansible-doc
@@ -34,6 +34,7 @@ import traceback
MODULEDIR = C.DEFAULT_MODULE_PATH
BLACKLIST_EXTS = ('.pyc', '.swp', '.bak', '~', '.rpm')
+IGNORE_FILES = [ "COPYING", "CONTRIBUTING", "LICENSE", "README" ]
_ITALIC = re.compile(r"I\(([^)]+)\)")
_BOLD = re.compile(r"B\(([^)]+)\)")
@@ -94,7 +95,7 @@ def get_man_text(doc):
desc = " ".join(doc['description'])
text.append("%s\n" % textwrap.fill(tty_ify(desc), initial_indent=" ", subsequent_indent=" "))
-
+
if 'option_keys' in doc and len(doc['option_keys']) > 0:
text.append("Options (= is mandatory):\n")
@@ -202,6 +203,28 @@ def get_module_list_text(module_list):
text.extend(deprecated)
return "\n".join(text)
+def find_modules(path, module_list):
+
+ if os.path.isdir(path):
+ for module in os.listdir(path):
+ if module.startswith('.'):
+ continue
+ elif os.path.isdir(module):
+ find_modules(module, module_list)
+ elif any(module.endswith(x) for x in BLACKLIST_EXTS):
+ continue
+ elif module.startswith('__'):
+ continue
+ elif module in 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
+ module_list.append(module)
+
def main():
p = optparse.OptionParser(
@@ -238,26 +261,14 @@ def main():
paths = utils.plugins.module_finder._get_paths()
module_list = []
for path in paths:
- if os.path.isdir(path):
- for module in os.listdir(path):
- if any(module.endswith(x) for x in BLACKLIST_EXTS):
- continue
- 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)
-
+ find_modules(path, module_list)
+
pager(get_module_list_text(module_list))
sys.exit()
if len(args) == 0:
p.print_help()
-
+
def print_paths(finder):
''' Returns a string suitable for printing of the search path '''
@@ -267,14 +278,13 @@ def main():
if i not in ret:
ret.append(i)
return os.pathsep.join(ret)
-
+
text = ''
for module in args:
filename = utils.plugins.module_finder.find_plugin(module)
if filename is None:
- sys.stderr.write("module %s not found in %s\n" % (module,
- print_paths(utils.plugins.module_finder)))
+ sys.stderr.write("module %s not found in %s\n" % (module, print_paths(utils.plugins.module_finder)))
continue
if any(filename.endswith(x) for x in BLACKLIST_EXTS):