buildframework/helium/sf/python/blockspackager/lib/packager/datasources/cone.py
changeset 645 b8d81fa19e7d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/sf/python/blockspackager/lib/packager/datasources/cone.py	Sun Oct 10 15:22:15 2010 +0300
@@ -0,0 +1,74 @@
+#============================================================================ 
+#Name        : conftool.py 
+#Part of     : Helium 
+
+#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+#All rights reserved.
+#This component and the accompanying materials are made available
+#under the terms of the License "Eclipse Public License v1.0"
+#which accompanies this distribution, and is available
+#at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+#Initial Contributors:
+#Nokia Corporation - initial contribution.
+#
+#Contributors:
+#
+#Description:
+#===============================================================================
+
+from packager.datasources.api import DataSource, DATASOURCES
+from Blocks.Packaging.BuildData import PlainBuildData
+import logging
+import re 
+import os
+
+logger = logging.getLogger('packager.datasources.conftool')
+
+class ConEDataSource(DataSource):
+    """ Extract information from ConE logs """
+    def __init__(self, epocroot, data=None):
+        DataSource.__init__(self, epocroot, data)
+    
+    def getTargetFiles(self):
+        """ Get the generated files from the log output. """
+        result = []
+        txtFile = open(self._data['filename'], 'r')
+        matcher = re.compile(r"^\s*Generating file '(.+)'\.\.\.\s*$")
+        for line in txtFile:
+            res = matcher.match(line)
+            if res:
+                result.append(os.path.normpath(os.path.join(self.epocroot, 
+                                                            res.group(1))))
+        txtFile.close()
+        return result
+
+    def getComponents(self):
+        """ Get the components list from the cli input. """
+        if 'name' not in self._data:
+            raise Exception("The name property has not be defined.")
+        if 'version' not in self._data:
+            raise Exception("The version property has not be defined.")
+
+        if 'filename' not in self._data:
+            raise Exception("The input conftool log file is not defined")
+
+        #todo: add the source iby / path for conftool input
+        build_data = PlainBuildData()
+        build_data.setComponentName(self._data['name'])
+        build_data.setComponentVersion(self._data['version'])
+        build_data.setSourceRoot(self.epocroot)
+        build_data.setTargetRoot(self.epocroot)
+        build_data.addTargetFiles([path[len(self.epocroot):].lstrip(os.sep) for path in self.getTargetFiles()])
+        return [build_data]
+
+    def getHelp(self):
+        """ Returns the help. """
+        return """
+name            Defines the name of the component
+version         Defines the version of the component
+filename        Defines the log file name of ctool
+"""
+
+        
+DATASOURCES['cone'] = ConEDataSource
\ No newline at end of file