Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move get_docstring from module_formatter into ansible/utils #1582

Merged
merged 1 commit into from
Nov 10, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
33 changes: 4 additions & 29 deletions hacking/module_formatter.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,9 @@
import time
import datetime
import subprocess
import traceback
import ansible.utils
from ansible.utils import module_docs

# modules that are ok that they do not have documentation strings
BLACKLIST_MODULES = [
'async_wrapper'
]

# Get parent directory of the directory this script lives in
MODULEDIR=os.path.abspath(os.path.join(
Expand Down Expand Up @@ -133,28 +130,6 @@ def rst_xline(width, char="="):
def load_examples_section(text):
return text.split('***BREAK***')

def get_docstring(filename, verbose=False):
"""
Search for assignment of the DOCUMENTATION variable in the given file.
Parse that from YAML and return the YAML doc or None.
"""

doc = None

try:
# Thank you, Habbie, for this bit of code :-)
M = ast.parse(''.join(open(filename)))
for child in M.body:
if isinstance(child, ast.Assign):
if 'DOCUMENTATION' in (t.id for t in child.targets):
doc = yaml.load(child.value.s)

except:
traceback.print_exc()
print "unable to parse %s" % filename
return doc


def return_data(text, options, outputname, module):
if options.output_dir is not None:
f = open(os.path.join(options.output_dir, outputname % module), 'w')
Expand Down Expand Up @@ -326,9 +301,9 @@ def main():
js_data.append(j)
continue

doc = get_docstring(fname, verbose=options.verbose)
doc = ansible.utils.module_docs.get_docstring(fname, verbose=options.verbose)

if doc is None and module not in BLACKLIST_MODULES:
if doc is None and module not in ansible.utils.module_docs.BLACKLIST_MODULES:
sys.stderr.write("*** ERROR: CORE MODULE MISSING DOCUMENTATION: %s ***\n" % module)
#sys.exit(1)

Expand Down
50 changes: 50 additions & 0 deletions lib/ansible/utils/module_docs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/usr/bin/env python
# (c) 2012, Jan-Piet Mens <jpmens () gmail.com>
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
#

import os
import sys
import ast
import yaml
import traceback

# modules that are ok that they do not have documentation strings
BLACKLIST_MODULES = [
'async_wrapper',
]

def get_docstring(filename, verbose=False):
"""
Search for assignment of the DOCUMENTATION variable in the given file.
Parse that from YAML and return the YAML doc or None.
"""

doc = None

try:
# Thank you, Habbie, for this bit of code :-)
M = ast.parse(''.join(open(filename)))
for child in M.body:
if isinstance(child, ast.Assign):
if 'DOCUMENTATION' in (t.id for t in child.targets):
doc = yaml.load(child.value.s)

except:
traceback.print_exc()
print "unable to parse %s" % filename
return doc
2 changes: 0 additions & 2 deletions library/ec2
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,8 @@ options:
examples:
- code: "local_action: ec2 keypair=admin instance_type=m1.large image=emi-40603AD1 wait=true group=webserver"
description: "Examples from Ansible Playbooks"
- code:
requirements: [ "euca2ools" ]
author: Seth Vidal

'''

import euca2ools.commands.euca.runinstances
Expand Down