diff -r 044383f39525 -r be27ed110b50 buildframework/helium/tools/localisation/get_variant_dirs.py --- /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()