123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #!/usr/bin/python
-
- import sys,os,re
- from sets import Set
-
- ################################################################################
- # Configuration
- ################################################################################
- downloadsite = "http://vaadin.com/download"
- latestfile = "/release/6.8/LATEST"
-
- JAPIZE = "japize"
- JAPICOMPAT = "japicompat"
-
- ################################################################################
- # Utility Functions
- ################################################################################
- def command(cmd, dryrun=0):
- if not dryrun:
- if os.system(cmd):
- print "Command '%s' failed, exiting." % (cmd)
- sys.exit(1)
- else:
- print "Dry run - not executing."
-
- ################################################################################
- # Difference of two lists of files
- ################################################################################
- def diffFiles(a, b):
- diff = Set(a).difference(Set(b))
- difffiles = []
- for item in diff:
- difffiles.append(item)
- difffiles.sort()
- return difffiles
-
- ################################################################################
- # Lists files inside a Zip file (a JAR)
- ################################################################################
- def listJarFiles(jarfile):
- # Read the jar content listing
- pin = os.popen("unzip -ql %s" % jarfile, "r")
- lines = map(lambda x: x[:-1], pin.readlines())
- pin.close()
-
- # Determine the position of file names
- namepos = lines[0].find("Name")
- files = []
- for i in xrange(2, len(lines)-2):
- filename = lines[i][namepos:]
- files.append(filename)
-
- return files
-
- ################################################################################
- # JAPI - Java API Differences
- ################################################################################
- def japize(version, jarfile):
- cmd = "%s as %s apis %s +com.vaadin, $JAVA_HOME/jre/lib/rt.jar 2>/dev/null" % (JAPIZE, version, jarfile)
- command (cmd)
-
- return "%s.japi.gz" % (version)
-
- def japicompat(japi1, japi2):
- cmd = "%s -q %s %s" % (JAPICOMPAT, japi1, japi2)
- pin = os.popen(cmd, "r")
- lines = "".join(pin.readlines())
- pin.close()
- return lines
-
- ################################################################################
- #
- ################################################################################
-
- # Download the installation package of the latest version
- wgetcmd = "wget -q -O - %s" % (downloadsite+latestfile)
- pin = os.popen(wgetcmd, "r")
- latestdata = pin.readlines()
- pin.close()
-
- latestversion = latestdata[0].strip()
- latestpath = latestdata[1].strip()
- latestURL = downloadsite + "/" + latestpath + "/"
-
- latestfilename = "vaadin-%s.jar" % (latestversion)
- latestpackage = latestURL + latestfilename
- locallatestpackage = "/tmp/%s" % (latestfilename)
-
- print "Latest version: %s" % (latestversion)
- print "Latest version path: %s" % (latestpath)
- print "Latest version URL: %s" % (latestURL)
-
- # Check if it already exists
- try:
- os.stat(locallatestpackage)
- print "Latest package already exists in %s" % (locallatestpackage)
- # File exists
- except OSError:
- # File does not exist, get it.
- print "Downloading latest release package %s to %s" % (latestpackage, locallatestpackage)
- wgetcmd = "wget -q -O %s %s" % (locallatestpackage, latestpackage)
- command (wgetcmd)
-
- # List files in built version.
- builtversion = sys.argv[1]
- builtpackage = "build/result/vaadin-%s/WebContent/WEB-INF/lib/vaadin-%s.jar" % (builtversion, builtversion)
-
- # Report differences
-
- print "\n--------------------------------------------------------------------------------\nVaadin JAR differences"
-
- latestJarFiles = listJarFiles(locallatestpackage)
- builtJarFiles = listJarFiles(builtpackage)
-
- # New files
- newfiles = diffFiles(builtJarFiles, latestJarFiles)
- print "\n%d new files:" % (len(newfiles))
- for item in newfiles:
- print item
-
- # Removed files
- removed = diffFiles(latestJarFiles, builtJarFiles)
- print "\n%d removed files:" % (len(removed))
- for item in removed:
- print item
-
- print "\n--------------------------------------------------------------------------------\nVaadin API differences"
- oldjapi = japize(latestversion, locallatestpackage)
- newjapi = japize(builtversion, builtpackage)
-
- print "\n--------------------------------------------------------------------------------\nLost API features\n"
- japidiff1 = japicompat(oldjapi, newjapi)
- print japidiff1
-
- print "\n--------------------------------------------------------------------------------\nNew API features\n"
- japidiff2 = japicompat(newjapi, oldjapi)
- print japidiff2
-
- # Purge downloaded package
- command("rm %s" % (locallatestpackage))
|