buildframework/helium/tools/localisation/get_variant_dirs.py
changeset 1 be27ed110b50
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/localisation/get_variant_dirs.py	Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,79 @@
+#============================================================================ 
+#Name        : get_variant_dirs.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:
+#===============================================================================
+
+""" Script that return the  list of variant directory to include. """
+import configuration
+import bsf
+import localisation
+import codecs
+import sys
+import os
+import re
+import shutil
+
+def get_hierarchy(config):
+    """ return the variant hierarchy. """
+    result = [config]  
+    while (config.parent != None):
+        if (config.parent.parent != None):
+            result.append(config.parent)
+        config = config.parent
+    return result
+
+def clean_array(array):
+    """ Remove all None element from an array. """
+    result = []
+    for item in array:
+        if item != None:
+            result.append(item)
+    return result
+
+def main():
+    """ Main function. """
+    configfile = sys.argv[1]
+    product = sys.argv[2]
+    vid = sys.argv[3]
+    vtype = sys.argv[4]
+    vkey = sys.argv[5]
+    try:
+        builder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
+        config_set = builder.getConfiguration()
+    
+        bsfs = bsf.read_all()
+        if not bsfs.has_key(product):
+            raise Exception("Product not defined, could not find %s.bsf" % product)
+    
+        for variant in config_set.getConfigurations(product):
+            if not (variant.type == vtype):
+                continue
+            if not variant.has_key(vkey):
+                continue
+            if (vid != variant[vkey]):
+                continue
+            print " ".join(clean_array(map(lambda x:localisation.find_variant_path(x, "%s.id" % x.type), get_hierarchy(variant))))
+            sys.exit(0)
+           
+    except IOError, exc:
+        print "ERROR: %s" % exc
+        sys.exit(-1)
+    
+    sys.exit(0)
+
+if __name__ == "__main__":
+    main()