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.


Reply via email to