[Oval-commits] r45 - in trunk/tools: . oval/definition oval/parser

Pavel Vinogradov blaze-guest at alioth.debian.org
Tue Jun 12 14:16:44 UTC 2007


Author: blaze-guest
Date: 2007-06-12 14:16:43 +0000 (Tue, 12 Jun 2007)
New Revision: 45

Modified:
   trunk/tools/TODO
   trunk/tools/oval/definition/generator.py
   trunk/tools/oval/parser/dsa.py
   trunk/tools/oval/parser/wml.py
   trunk/tools/parse-dsa-oval.py
Log:
Fill metadata section with data from WML file.

Modified: trunk/tools/TODO
===================================================================
--- trunk/tools/TODO	2007-06-12 13:12:24 UTC (rev 44)
+++ trunk/tools/TODO	2007-06-12 14:16:43 UTC (rev 45)
@@ -4,12 +4,8 @@
 
 oval/dsa/parser.py:
 	Proper extraction of date from "repord_date>" DSA token
-	
-oval/wml/parser.py
-	Write wml parser for extract title and description about definitions
-	
+		
 oval/definition/generator.py:
-	Fill metadata section
 	Rewrite tests generation conform to linux-definition-schema
 	Optimize handling architectures with different bpackages
 	 
\ No newline at end of file

Modified: trunk/tools/oval/definition/generator.py
===================================================================
--- trunk/tools/oval/definition/generator.py	2007-06-12 13:12:24 UTC (rev 44)
+++ trunk/tools/oval/definition/generator.py	2007-06-12 14:16:43 UTC (rev 45)
@@ -20,7 +20,7 @@
 		element.attributes.setNamedItem (attribute)
 	
 	if descr != None:
-		description = doc.createTextNode (descr)
+		description = doc.createTextNode (descr.encode("utf8"))
 		element.appendChild (description)
 	
 	return (element)
@@ -226,7 +226,7 @@
 
 	### Definition : Metadata : title, affected, reference, description ###
 	metadata = __createXMLElement ("metadata")
-	metadata.appendChild (__createXMLElement ("title", "TODO"))
+	metadata.appendChild (__createXMLElement ("title", dsaref["description"]))
 
 	### Definition : Metadata : Affected : platform, product ###
 	affected = __createXMLElement ("affected", attrs = {"family" : "debian"})
@@ -251,7 +251,7 @@
 		logging.log(logging.WARNING, "Secrefs None in DSA " + dsa)
 	
 	#TODO: this could be extracted from the wml file....
-	metadata.appendChild ( __createXMLElement ("description", "TODO") )
+	metadata.appendChild ( __createXMLElement ("description", dsaref["moreinfo"]) )
 	definition.appendChild ( metadata )
 
 	### Definition : Notes ###
@@ -290,10 +290,8 @@
 	root.appendChild ( __createGeneratorHeader () )
 	
 	definitions = doc.createElement ("definitions")
-	for ref in dsaref:
-		dsa = ref.keys()[0]
-		dsare = ref.get(dsa)
-		definitions.appendChild (createDefinition(dsa, dsare))
+	for (dsa, data) in dsaref.iteritems():
+		definitions.appendChild (createDefinition(dsa, data))
 
 	root.appendChild (definitions)
 	

Modified: trunk/tools/oval/parser/dsa.py
===================================================================
--- trunk/tools/oval/parser/dsa.py	2007-06-12 13:12:24 UTC (rev 44)
+++ trunk/tools/oval/parser/dsa.py	2007-06-12 14:16:43 UTC (rev 45)
@@ -30,6 +30,7 @@
 	dsaFile = open(path)
 	
 	for line in dsaFile:
+		line = line.decode('koi8-r')
 		datepatern = re.compile (r'report_date>([\d-]+)</define-tag>')
 		result = datepatern.search (line)
 		if result:
@@ -83,4 +84,4 @@
 				else:
 					data["packages"][deb_ver][architecture] = {package : [version]}
 	
-	return ({dsa : data})
+	return (dsa, data)

Modified: trunk/tools/oval/parser/wml.py
===================================================================
--- trunk/tools/oval/parser/wml.py	2007-06-12 13:12:24 UTC (rev 44)
+++ trunk/tools/oval/parser/wml.py	2007-06-12 14:16:43 UTC (rev 45)
@@ -28,8 +28,8 @@
 		wmlFile = open(path)
 		
 		for line in wmlFile:
+			line = line.decode('koi8-r')
 			
-			
 			descrpatern = re.compile (r'description>(.*?)</define-tag>')
 			result = descrpatern.search (line)
 			if result:
@@ -55,4 +55,4 @@
 	except IOError:
 		logging.log (logging.ERROR, "Can't work with file %s" % path)
 	
-	return ({dsa : data})
\ No newline at end of file
+	return (dsa, data)
\ No newline at end of file

Modified: trunk/tools/parse-dsa-oval.py
===================================================================
--- trunk/tools/parse-dsa-oval.py	2007-06-12 13:12:24 UTC (rev 44)
+++ trunk/tools/parse-dsa-oval.py	2007-06-12 14:16:43 UTC (rev 45)
@@ -14,8 +14,9 @@
 
 import oval.definition.generator
 from oval.parser import dsa
+from oval.parser import wml
 
-dsaref = []
+dsaref = {}
 
 def usage (prog = "parse-wml-oval.py"):
 	"""Print information about script flags and options"""
@@ -44,19 +45,32 @@
 		return (0)
 	
 	for file in os.listdir (directory):
-
+		
 		path = "%s/%s" % (directory, file)
-
+		
 		logging.log (logging.DEBUG, "Checking %s (for %s at %s)" % (file, postfix, depth))
 		
 		if os.access(path, os.R_OK) and os.path.isdir (path) and not os.path.islink (path) and file[0] != '.':
 			logging.log(logging.DEBUG, "Entering directory " + path)
 			parsedirs (path, postfix, depth-1)
-
+		
 		if os.access(path, os.R_OK) and file.endswith(postfix) and file[0] != '.' and file[0] != '#':
 			result = dsa.parseFile (path)
 			if result:
-				dsaref.append (result)
+				if dsaref.has_key (result[0]):
+					for (k, v) in result[1].iteritems():
+						dsaref[result[0]][k] = v
+				else:
+					dsaref[result[0]] = result[1]
+		
+		if os.access(path, os.R_OK) and file.endswith(".wml") and file[0] != '.' and file[0] != '#':
+			result = wml.parseFile(path)
+			if result:
+				if dsaref.has_key (result[0]):
+					for (k, v) in result[1].iteritems():
+						dsaref[result[0]][k] = v
+				else:
+					dsaref[result[0]] = result[1]				
 	return 0
 
 if __name__ == "__main__":




More information about the Oval-commits mailing list