Revision: 855ac2acb411
Branch: default
Author: Anssi Syrjäsalo
Date: Mon Jun 3 06:11:56 2013
Log: generate.py: Asking if Javadocs need to be generated as well
http://code.google.com/p/robotframework/source/detail?r=855ac2acb411
Modified:
/doc/api/generate.py
=======================================
--- /doc/api/generate.py Thu May 10 04:28:47 2012
+++ /doc/api/generate.py Mon Jun 3 06:11:56 2013
@@ -1,70 +1,95 @@
-#! /usr/bin/env python
+#!/usr/bin/env python
-"""generate.py -- Generate Robot Framework API documentation
-
-usage: generate.py
-
-This script creates API documentation from both Python and Java source code
-included in `src/python and `src/java`, respectively. Python autodocs are
-created in `doc/api/autodoc` and Javadocs in `doc/api/_static/javadoc`.
-
-API documentation entry point is create using Sphinx's `make html`.
-
-Sphinx, sphinx-apidoc and javadoc commands need to be in $PATH.
-"""
-
-import sys
import os
import shutil
+from optparse import OptionParser
from os.path import abspath, dirname, join
from subprocess import call
+from sys import exit
-BUILD_DIR = abspath(dirname(__file__))
-AUTODOC_DIR = join(BUILD_DIR, 'autodoc')
-ROOT = join(BUILD_DIR, '..', '..')
-ROBOT_DIR = join(ROOT, 'src', 'robot')
-JAVA_SRC = join(ROOT, 'src', 'java')
-JAVA_TARGET = join(BUILD_DIR, '_static', 'javadoc')
+class GenerateDocs(object):
-def generate():
- clean()
- update()
- create_javadoc()
- orig_dir = abspath(os.curdir)
- os.chdir(BUILD_DIR)
- rc = call(['make', 'html'], shell=os.name == 'nt')
- os.chdir(orig_dir)
- print abspath(join(BUILD_DIR, '_build', 'html', 'index.html'))
- return rc
+ BUILD_DIR = abspath(dirname(__file__))
+ AUTODOC_DIR = join(BUILD_DIR, 'autodoc')
+ ROOT = join(BUILD_DIR, '..', '..')
+ ROBOT_DIR = join(ROOT, 'src', 'robot')
+ JAVA_SRC = join(ROOT, 'src', 'java')
+ JAVA_TARGET = join(BUILD_DIR, '_static', 'javadoc')
+ def __init__(self):
+ try:
+ import sphinx as _
+ except ImportError:
+ exit('Generating API docs requires Sphinx')
+ self.options = GeneratorOptions()
-def clean():
- for dirname in AUTODOC_DIR, JAVA_TARGET:
+ def run(self):
+ self.create_autodoc()
+ if self.options.also_javadoc:
+ self.create_javadoc()
+ orig_dir = abspath(os.curdir)
+ os.chdir(self.BUILD_DIR)
+ rc = call(['make', 'html'], shell=os.name == 'nt')
+ os.chdir(orig_dir)
+ print abspath(join(self.BUILD_DIR, '_build', 'html', 'index.html'))
+ exit(rc)
+
+ def clean_directory(self, dirname):
if os.path.exists(dirname):
print 'Cleaning', dirname
shutil.rmtree(dirname)
+ def create_autodoc(self):
+ self.clean_directory(self.AUTODOC_DIR)
+ print 'Creating autodoc'
+ call(['sphinx-apidoc', '--output-dir', self.AUTODOC_DIR, '--force',
+ '--no-toc', '--maxdepth', '2', self.ROBOT_DIR])
+
+ def create_javadoc(self):
+ self.clean_directory(self.JAVA_TARGET)
+ print 'Creating javadoc'
+ call(['javadoc', '-sourcepath', self.JAVA_SRC, '-d',
self.JAVA_TARGET,
+ '-notimestamp', 'org.robotframework'])
+
+
+class GeneratorOptions():
+
+ usage = """
+ generate.py [options]
+
+ This script creates API documentation from both Python and Java source
code
+ included in `src/python and `src/java`, respectively. Python autodocs
are
+ created in `doc/api/autodoc` and Javadocs in `doc/api/_static/javadoc`.
+
+ API documentation entry point is create using Sphinx's `make html`.
+
+ Sphinx, sphinx-apidoc and javadoc commands need to be in $PATH.
+ """
+
+ def __init__(self):
+ self._parser = OptionParser(self.usage)
+ self._add_parser_options()
+ self._options, _ = self._parser.parse_args()
+ if not self._options.also_javadoc:
+ self.prompt_for_javadoc()
-def update():
- print 'Creating autodoc'
- call(['sphinx-apidoc', '--output-dir',
AUTODOC_DIR, '--force', '--no-toc',
- '--maxdepth', '2', ROBOT_DIR])
+ @property
+ def also_javadoc(self):
+ return self._options.also_javadoc
+ def _add_parser_options(self):
+ self._parser.add_option("-j", "--also-javadoc",
+ action='store_true',
+ dest="also_javadoc",
+ help="also generate Javadocs (off by default)"
+ )
-def create_javadoc():
- print 'Creating javadoc'
- call(['javadoc', '-sourcepath', JAVA_SRC, '-d', JAVA_TARGET,
- '-notimestamp', 'org.robotframework'])
+ def prompt_for_javadoc(self):
+ selection = raw_input("Also generate Javadoc [Y/N] (N by default)
")
+ if len(selection) > 0 and selection[0].lower() == "y":
+ self._options.also_javadoc = True
if __name__ == '__main__':
- if sys.argv[1:]:
- print __doc__
- sys.exit(1)
- try:
- import sphinx as _
- except ImportError:
- sys.exit('Generating API docs requires Sphinx')
- else:
- sys.exit(generate())
+ GenerateDocs().run()
--
---
You received this message because you are subscribed to the Google Groups "robotframework-commit" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to robotframework-commit+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.