[infinispan-commits] Infinispan SVN: r1200 - trunk/bin.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Mon Nov 16 05:59:12 EST 2009
Author: manik.surtani at jboss.com
Date: 2009-11-16 05:59:12 -0500 (Mon, 16 Nov 2009)
New Revision: 1200
Modified:
trunk/bin/pythonTools.py
trunk/bin/release.py
Log:
Improved release script
Modified: trunk/bin/pythonTools.py
===================================================================
--- trunk/bin/pythonTools.py 2009-11-15 12:09:55 UTC (rev 1199)
+++ trunk/bin/pythonTools.py 2009-11-16 10:59:12 UTC (rev 1200)
@@ -2,8 +2,48 @@
import fnmatch
import re
import subprocess
+import sys
+settings_file = '%s/.infinispan_dev_settings' % os.getenv('HOME')
+### Known config keys
+svn_base_key = "svn_base"
+local_tags_dir_key = "local_tags_dir"
+local_mvn_repo_dir_key = "local_mvn_repo_dir"
+maven_pom_xml_namespace = "http://maven.apache.org/POM/4.0.0"
+
+def get_settings():
+ """Retrieves user-specific settings for all Infinispan tools. Returns a dict of key/value pairs, or an empty dict if the settings file doesn't exist."""
+ f = None
+ try:
+ settings = {}
+ f = open(settings_file)
+ for l in f:
+ if not l.strip().startswith("#"):
+ kvp = l.split("=")
+ if kvp and len(kvp) > 0 and kvp[0] and len(kvp) > 1:
+ settings[kvp[0].strip()] = kvp[1].strip()
+ return settings
+ except IOError as ioe:
+ return {}
+ finally:
+ if f:
+ f.close()
+
+settings = get_settings()
+
+def require_settings_file():
+ """Tests whether the settings file exists, and if not exits with an error message."""
+ f = None
+ try:
+ f = open(settings_file)
+ except IOError as ioe:
+ print "User-specific environment settings file %s is missing! Cannot proceed!" % settings_file
+ sys.exit(3)
+ finally:
+ if f:
+ f.close()
+
def toSet(list):
"""Crappy implementation of creating a Set from a List. To cope with older Python versions"""
tempDict = {}
Modified: trunk/bin/release.py
===================================================================
--- trunk/bin/release.py 2009-11-15 12:09:55 UTC (rev 1199)
+++ trunk/bin/release.py 2009-11-16 10:59:12 UTC (rev 1200)
@@ -18,26 +18,8 @@
from pythonTools import *
-### Globals
-# CONFIGURABLE VARIABLES
-
-# Base SVN directory for this release. There should be a "tags" and "trunk" directory under this.
-svnBase="https://svn.jboss.org/repos/infinispan"
-
-# Where do you locally check out tags?
-localTagsDir="/Users/manik/Code/infinispan/tags"
-
-# Your maven2 repo to deploy built artifacts
-localMvnRepoDir="/Users/manik/Code/maven2/org/infinispan"
-
-################################################################################
-#
-# Helper functions
-#
-################################################################################
-maven_pom_xml_namespace = "http://maven.apache.org/POM/4.0.0"
-
modules = []
+
def getModules(directory):
# look at the pom.xml file
tree = ElementTree()
@@ -76,7 +58,7 @@
def tagInSubversion(version, newVersion):
sc = get_svn_conn()
- sc.tag("%s/trunk" % svnBase, newVersion, version)
+ sc.tag("%s/trunk" % settings[svn_base_key], newVersion, version)
def getProjectVersionTag(tree):
return tree.find("./{%s}version" % (maven_pom_xml_namespace))
@@ -145,7 +127,7 @@
shutil.copytree(trunkDir, workingDir)
else:
client = get_svn_conn()
- client.checkout(svnBase + "/tags/" + version, workingDir)
+ client.checkout(settings[svn_base_key] + "/tags/" + version, workingDir)
pomsToPatch = get_poms_to_patch(workingDir)
@@ -191,14 +173,14 @@
return tree.findtext("./{%s}artifactId" % maven_pom_xml_namespace)
def checkInMaven2Repo(version, workingDir):
- os.chdir(localMvnRepoDir)
+ os.chdir(settings[local_mvn_repo_dir_key])
client = get_svn_conn()
poms = [workingDir + "/pom.xml"]
for m in modules:
poms.append(workingDir + "/" + m + "/pom.xml")
moduleNames=[]
for p in poms:
- moduleNames.append(localMvnRepoDir + "/" + getModuleName(p) + "/" + version)
+ moduleNames.append(settings[local_mvn_repo_dir_key] + "/" + getModuleName(p) + "/" + version)
client.add(moduleNames)
for mn in moduleNames:
checkInMessage = "Infinispan Release Script: Releasing module " + mn + " version " + version + " to public Maven2 repo"
@@ -208,7 +190,7 @@
os.mkdir(".tmp")
os.chdir(".tmp")
do_not_copy = shutil.ignore_patterns('*.xml', '*.sha1', '*.md5')
- shutil.copytree("%s/infinispan/%s" % (localMvnRepoDir, version), "%s" % version, ignore = do_not_copy)
+ shutil.copytree("%s/infinispan/%s" % (settings[local_mvn_repo_dir_key], version), "%s" % version, ignore = do_not_copy)
subprocess.check_call(["scp", "-r", version, "sourceforge_frs:/home/frs/project/i/in/infinispan/infinispan"])
def uploadJavadocs(base_dir, workingDir, version):
@@ -231,6 +213,18 @@
### This is the starting place for this script.
def release():
+ require_settings_file()
+
+ missing_keys = []
+ expected_keys = [svn_base_key, local_tags_dir_key, local_mvn_repo_dir_key]
+ for expected_key in expected_keys:
+ if expected_key not in settings:
+ missing_keys.append(expected_key)
+
+ if len(missing_keys) > 0:
+ print "Entries %s are missing in configuration file %s! Cannot proceed!" % (missing_keys, settings_file)
+ sys.exit(2)
+
# We start by determining whether the version passed in is a valid one
if len(sys.argv) < 2:
helpAndExit()
@@ -241,12 +235,12 @@
## Release order:
# Step 1: Tag in SVN
- newVersion = "%s/tags/%s" % (svnBase, version)
+ newVersion = "%s/tags/%s" % (settings[svn_base_key], version)
print "Step 1: Tagging trunk in SVN as %s" % newVersion
tagInSubversion(version, newVersion)
print "Step 1: Complete"
- workingDir = localTagsDir + "/" + version
+ workingDir = settings[local_tags_dir_key] + "/" + version
# Step 2: Update version in tagged files
print "Step 2: Updating version number in source files"
@@ -283,4 +277,4 @@
if __name__ == "__main__":
- release()
+ release()
More information about the infinispan-commits
mailing list