You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2021/04/20 00:33:31 UTC

svn commit: r1888987 - in /commons/cms-site/trunk/conf: component_releases.properties parse-latest-release.py

Author: sebb
Date: Tue Apr 20 00:33:31 2021
New Revision: 1888987

URL: http://svn.apache.org/viewvc?rev=1888987&view=rev
Log:
Use minidom and simplify parsing

Modified:
    commons/cms-site/trunk/conf/component_releases.properties
    commons/cms-site/trunk/conf/parse-latest-release.py

Modified: commons/cms-site/trunk/conf/component_releases.properties
URL: http://svn.apache.org/viewvc/commons/cms-site/trunk/conf/component_releases.properties?rev=1888987&r1=1888986&r2=1888987&view=diff
==============================================================================
--- commons/cms-site/trunk/conf/component_releases.properties (original)
+++ commons/cms-site/trunk/conf/component_releases.properties Tue Apr 20 00:33:31 2021
@@ -1,9 +1,9 @@
 bcelVersion=6.5.0
-bcelReleased=2020-06-10
+bcelReleased=2020-06-05
 beanutilsVersion=1.9.4
 beanutilsReleased=2019-08-13
 bsfVersion=3.1
-bsfReleased=2010-06-24
+bsfReleased=2010-24-06
 chainVersion=1.2
 chainReleased=2008-06-02
 cliVersion=1.4
@@ -11,21 +11,21 @@ cliReleased=2017-03-09
 codecVersion=1.15
 codecReleased=2020-09-01
 collectionsVersion=4.4
-collectionsReleased=2019-07-08
+collectionsReleased=2019-07-05
 compressVersion=1.20
 compressReleased=2020-02-08
 configurationVersion=2.7
 configurationReleased=2020-03-11
-cryptoVersion=1.1.0
-cryptoReleased=2020-09-02
+cryptoVersion=1.0.0
+cryptoReleased=2016-07-22
 csvVersion=1.8
-csvReleased=2020-02-06
-daemonVersion=1.2.2
-daemonReleased=2019-09-30
-dbcpVersion=2.8.0
-dbcpReleased=2020-09-25
-dbutilsVersion=1.7
-dbutilsReleased=2017-07-20
+csvReleased=2020-02-01
+daemonVersion=1.2.4
+daemonReleased=2021-01-21
+dbcpVersion=2.3.0
+dbcpReleased=2018-05-12
+dbutilsVersion=1.6
+dbutilsReleased=2014-07-20
 digesterVersion=3.2
 digesterReleased=2011-12-13
 discoveryVersion=0.5
@@ -40,36 +40,36 @@ functorVersion=1.0
 functorReleased=2011-??-??
 geometryVersion=1.0-beta1
 geometryReleased=2020-07-19
-imagingVersion=1.0-alpha1
-imagingReleased=2019-05-02
-ioVersion=2.8.0
-ioReleased=2020-09-10
+imagingVersion=1.0-alpha2
+imagingReleased=2020-08-07
+ioVersion=2.6
+ioReleased=2017-10-15
 jciVersion=1.1
 jciReleased=2013-10-14
 jcsVersion=3.0
 jcsReleased=2020-08-16
-jellyVersion=1.0.1
-jellyReleased=2017-09-27
+jellyVersion=1.0
+jellyReleased=2005-06-16
 jexlVersion=3.1
 jexlReleased=2017-04-14
 jxpathVersion=1.3
 jxpathReleased=2008-08-14
-langVersion=3.12.0
-langReleased=2021-03-01
+langVersion=3.9
+langReleased=2019-04-15
 launcherVersion=1.1
 launcherReleased=2004-08-22
 loggingVersion=1.2
 loggingReleased=2014-07-11
 mathVersion=3.5
 mathReleased=2015-04-17
-netVersion=3.8.0
-netReleased=2021-02-19
+netVersion=3.7
+netReleased=2020-08-06
 numbersVersion=1.0-beta1
 numbersReleased=2020-04-08
 ognlVersion=4.0
 ognlReleased=2013-??-??
-poolVersion=2.9.0
-poolReleased=2020-09-29
+poolVersion=2.4.2
+poolReleased=2015-08-01
 proxyVersion=1.0
 proxyReleased=2008-02-28
 rdfVersion=0.5.0
@@ -79,12 +79,12 @@ rngReleased=2019-11-11
 scxmlVersion=0.9
 scxmlReleased=2008-12-01
 statisticsVersion=0.1
-statisticsReleased=????-??-??
-textVersion=1.9
-textReleased=2019-07-25
+statisticsReleased=2018-01-03
+textVersion=1.6
+textReleased=2018-10-16
 validatorVersion=1.7
 validatorReleased=2020-08-07
-vfsVersion=2.8.0
-vfsReleased=2021-03-10
+vfsVersion=2.2
+vfsReleased=2017-10-06
 weaverVersion=2.0
 weaverReleased=2018-09-07

Modified: commons/cms-site/trunk/conf/parse-latest-release.py
URL: http://svn.apache.org/viewvc/commons/cms-site/trunk/conf/parse-latest-release.py?rev=1888987&r1=1888986&r2=1888987&view=diff
==============================================================================
--- commons/cms-site/trunk/conf/parse-latest-release.py (original)
+++ commons/cms-site/trunk/conf/parse-latest-release.py Tue Apr 20 00:33:31 2021
@@ -5,8 +5,7 @@ import os.path
 import re
 from inspect import getsourcefile
 
-# TODO rewrite to use standard Python XML(minidom or xml.etree) instead of requiring extra package
-from lxml import etree
+from xml.dom import minidom
 
 from distutils.version import StrictVersion
 
@@ -24,50 +23,42 @@ def CommonsVersion(v):
     # This compares numbers correctly and treats [ab]\d+ suffix as earlier than ones without
     return(StrictVersion(v1))
 
-def findLatestVersion(element, version_tag, date_tag):
+def getText(parent):
+    rc = []
+    for node in parent.childNodes:
+        if node.nodeType == node.TEXT_NODE:
+            rc.append(node.data)
+    return ''.join(rc)
+
+def getReleaseInfo(path):
+    rels = minidom.parse(path).getElementsByTagName('release')
+
     latest_version = None
     latest_date = None
-    for version_element in element:
-        version_number = version_element.xpath("./*[local-name() = '" + version_tag + "']/text()")[0]
-        date = version_element.xpath("./*[local-name() = '" + date_tag + "']/text()")[0]
-        if latest_version == None:
-            latest_version = version_number
-            latest_date = date
-        elif CommonsVersion(version_number) > CommonsVersion(latest_version):
-            latest_version = version_number
-            latest_date = date
 
+    for rel in rels:
+        revision = None
+        created = None
+        for ver in rel.childNodes: # these must be Version elements
+            if isinstance(ver, minidom.Element):
+                for child in ver.childNodes:
+                    if isinstance(child, minidom.Element):
+                        tag = child.tagName.lower()
+                        if tag in ['version', 'revision']:
+                            revision = getText(child)
+                        if tag == 'created':
+                            created = getText(child)
+        if latest_version == None or CommonsVersion(revision) > CommonsVersion(latest_version):
+            latest_version = revision
+            latest_date = created
     return latest_version, latest_date
 
-def getReleaseInfo(file):
-    with open(file) as f:
-        tree = etree.parse(f).getroot()
-
-    version = None
-    date = None
-
-    latest_release = tree.xpath("//*[local-name() = 'release']/*[local-name() = 'Version']")
-    if len(latest_release) > 0:
-        version, date = findLatestVersion(latest_release, 'revision', 'created')
-
-    if version == None:
-        latest_release = tree.xpath("//*[local-name() = 'release']/*[local-name() = 'revision']")
-        if len(latest_release) > 0:
-            version, date = findLatestVersion(latest_release, 'version', 'created')
-
-    if version == None:
-        latest_release = tree.xpath("//*[local-name() = 'release']/*[local-name() = 'version']")
-        if len(latest_release) > 0:
-            version, date = findLatestVersion(latest_release, 'revision', 'created')
-
-    return version, date
-
 
 f = open(os.path.join(MYPATH, 'component_releases.properties'), 'w+')
 
-for file in sorted(os.listdir(DOAPS)):
-    comp_name = file[5:-4] # drop doap_ prefix and .rdf suffix
-    version, date = getReleaseInfo(os.path.join(DOAPS, file))
+for name in sorted(os.listdir(DOAPS)):
+    comp_name = name[5:-4] # drop doap_ prefix and .rdf suffix
+    version, date = getReleaseInfo(os.path.join(DOAPS, name))
     print(comp_name, version, date)
     if version != None:
         f.write(comp_name + 'Version=' + version + '\n')