Miscellaneous fixes to module_formatter.py

Try to autodetect MODULEDIR, instead of hardcoded path in jpmens
homedir.
Check if MODULEDIR exists; exit if it doesn't.
Rewrite boilerplate() to use DOCUMENTATION.yaml in examples/.  This
makes use of tbielawa's recent change that added this example file.
This also fixes -G so that it works.  boilerplate() was commented out
before.
This commit is contained in:
Stephen Fromm 2012-10-12 16:21:41 -07:00
parent 29d49d415f
commit 60f06c36b3

View file

@ -35,35 +35,13 @@ BLACKLIST_MODULES = [
'async_wrapper' 'async_wrapper'
] ]
MODULEDIR="/Users/jpm/Auto/pubgit/ansible/ansible/library" # Get parent directory of the directory this script lives in
MODULEDIR=os.path.abspath(os.path.join(
BOILERPLATE = ''' os.path.dirname(os.path.realpath(__file__)), os.pardir, 'library'
--- ))
module: foo EXAMPLE_YAML=os.path.abspath(os.path.join(
author: AUTHORNAME os.path.dirname(os.path.realpath(__file__)), os.pardir, 'examples', 'DOCUMENTATION.yaml'
short_description: A short description, think title ))
description:
- First paragraph explains what the module does. More paragraphs can
be added.
- Second para of description. You can use B(bold), I(italic), and
C(constant-width). To refer to another M(module) use that, and
U(url) exists too.
version_added: "0.x"
options:
dest:
required: true
description:
- What does this option do, and bla bla bla
- More than one paragraph allowed here as well. Formatting
with B(bold), etc. work too.
remove:
required: false
choices: [ yes, no ]
default: "maybe"
aliases: [ kill, killme, delete ]
description:
- The foo to do on M(module) but be careful of lorem ipsum
'''
# There is a better way of doing this! # There is a better way of doing this!
# TODO: somebody add U(text, http://foo.bar/) as described by Tim in #991 # TODO: somebody add U(text, http://foo.bar/) as described by Tim in #991
@ -177,6 +155,11 @@ def return_data(text, options, outputname, module):
else: else:
print text print text
def boilerplate():
if not os.path.exists(EXAMPLE_YAML):
print >>sys.stderr, "Missing example boiler plate: %S" % EXAMPLE_YAML
print file(EXAMPLE_YAML).read()
def main(): def main():
@ -231,7 +214,7 @@ def main():
dest="do_boilerplate", dest="do_boilerplate",
default=False, default=False,
help="generate boilerplate DOCUMENTATION to stdout") help="generate boilerplate DOCUMENTATION to stdout")
p.add_option('-V', action='version') p.add_option('-V', action='version', help='Show version number and exit')
(options, args) = p.parse_args() (options, args) = p.parse_args()
@ -247,6 +230,10 @@ def main():
if not options.module_dir: if not options.module_dir:
print "Need module_dir" print "Need module_dir"
sys.exit(1) sys.exit(1)
if not os.path.exists(options.module_dir):
print >>sys.stderr, "Module directory does not exist: %s" % options.module_dir
sys.exit(1)
if not options.template_dir: if not options.template_dir:
print "Need template_dir" print "Need template_dir"
@ -364,34 +351,5 @@ def main():
text = template.render(docs) text = template.render(docs)
return_data(text, options, outputname, 'modules') return_data(text, options, outputname, 'modules')
#def boilerplate():
#
# # Sneaky: insert author's name from Git config
#
# cmd = subprocess.Popen("git config --get user.name", shell=True,
# stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# out, err = cmd.communicate()
#
# if len(out.split('\n')) == 2:
# author = out.split('\n')[0]
# print author
# else:
# author = "Your Name"
#
# # I can't dump YAML in ordered fasion, so I use this boilerplate string
# # and verify it is parseable just before printing it out to the user.
#
# try:
# boilplate = yaml.load(BOILERPLATE)
# except:
# print "Something is wrong with the BOILERPLATE"
# sys.exit(1)
#
# print """
#DOCUMENTATION = '''
#%s
#'''
#"""[1:-1] % (BOILERPLATE.replace('AUTHORNAME', author) [1:-1] )
if __name__ == '__main__': if __name__ == '__main__':
main() main()