You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@yetus.apache.org by bu...@apache.org on 2016/03/08 17:44:02 UTC

yetus git commit: YETUS-324. Split releasedocmaker.py option parsing into separate function.

Repository: yetus
Updated Branches:
  refs/heads/master 356b33bc2 -> 9ae534f3b


YETUS-324. Split releasedocmaker.py option parsing into separate function.

Signed-off-by: Sean Busbey <bu...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/yetus/repo
Commit: http://git-wip-us.apache.org/repos/asf/yetus/commit/9ae534f3
Tree: http://git-wip-us.apache.org/repos/asf/yetus/tree/9ae534f3
Diff: http://git-wip-us.apache.org/repos/asf/yetus/diff/9ae534f3

Branch: refs/heads/master
Commit: 9ae534f3b94a515dd0f74244f3fdffccbeba1ea0
Parents: 356b33b
Author: Andrew Wang <an...@cloudera.com>
Authored: Thu Mar 3 14:38:00 2016 -0800
Committer: Sean Busbey <bu...@apache.org>
Committed: Tue Mar 8 08:38:04 2016 -0800

----------------------------------------------------------------------
 release-doc-maker/releasedocmaker.py | 51 +++++++++++++++++++++----------
 1 file changed, 35 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/yetus/blob/9ae534f3/release-doc-maker/releasedocmaker.py
----------------------------------------------------------------------
diff --git a/release-doc-maker/releasedocmaker.py b/release-doc-maker/releasedocmaker.py
index f1d7e14..831b26b 100755
--- a/release-doc-maker/releasedocmaker.py
+++ b/release-doc-maker/releasedocmaker.py
@@ -20,6 +20,7 @@ from glob import glob
 from optparse import OptionParser
 from time import gmtime, strftime
 from distutils.version import LooseVersion
+import errno
 import os
 import re
 import sys
@@ -441,7 +442,8 @@ class Outputs(object):
                            textsanitize(jira.get_assignee()))
             self.write_key_raw(jira.get_project(), line)
 
-def main():
+def parse_args():
+    """Parse command-line arguments with optparse."""
     usage = "usage: %prog --project PROJECT [--project PROJECT] --version VERSION [--version VERSION2 ...]"
     parser = OptionParser(usage=usage,
                           epilog="Markdown-formatted CHANGES and RELEASENOTES files will be stored"
@@ -471,37 +473,54 @@ def main():
                       help="specify base URL of the JIRA instance.")
     (options, _) = parser.parse_args()
 
+    # Validate options
+    if options.versions is None:
+        parser.error("At least one version needs to be supplied")
+    if options.projects is None:
+        parser.error("At least one project needs to be supplied")
+    if options.base_url is not None:
+        if len(options.base_url) > 1:
+            parser.error("Only one base URL should be given")
+        else:
+            options.base_url = options.base_url[0]
+    if options.output_directory is not None:
+        if len(options.output_directory) > 1:
+            parser.error("Only one output directory should be given")
+        else:
+            options.output_directory = options.output_directory[0]
+
+    return options
+
+def main():
+    options = parse_args()
     if options.release_version:
         with open(os.path.join(os.path.dirname(__file__), "../VERSION"), 'r') as ver_file:
             print ver_file.read()
         sys.exit(0)
 
-    if options.versions is None:
-        parser.error("At least one version needs to be supplied")
-
     if options.output_directory is not None:
-        if len(options.output_directory) > 1:
-            parser.error("Only one output directory should be given")
-        if not os.path.isdir(options.output_directory[0]):
-            try:
-                os.makedirs(options.output_directory[0])
-            except OSError:
-                parser.error("Unable to create output directory that does not exist")
+        # Create the output directory if it does not exist.
+        # Equivalent to `mkdir -p`.
+        try:
+            os.makedirs(options.output_directory)
+        except OSError as exc:
+            if exc.errno == errno.EEXIST and os.path.isdir(options.output_directory):
+                pass
+            else:
+                print "Unable to create output directory %s: %s" % \
+                        (options.output_directory, exc.message)
+                sys.exit(1)
         os.chdir(options.output_directory[0])
 
     if options.base_url is not None:
-        if len(options.base_url) > 1:
-            parser.error("Only one base URL should be given")
         global JIRA_BASE_URL
-        JIRA_BASE_URL = options.base_url[0]
+        JIRA_BASE_URL = options.base_url
 
     proxy = urllib2.ProxyHandler()
     opener = urllib2.build_opener(proxy)
     urllib2.install_opener(opener)
 
     projects = options.projects
-    if projects is None:
-        parser.error("At least one project needs to be supplied")
 
     if options.range is True:
         versions = [Version(v) for v in GetVersions(options.versions, projects).getlist()]