buildframework/helium/tools/compile/util/txt2sysdef.py
author Jon Chatten
Thu, 10 Dec 2009 15:35:48 +0000
branchwip
changeset 61 f520dfd22025
parent 1 be27ed110b50
permissions -rw-r--r--
Correct backslash escaping to only operate on non-'path' and 'tool' types.

#============================================================================ 
#Name        : txt2sysdef.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:
#===============================================================================


import os
import os.path
import sys
import shutil
import string


if __name__ == "__main__":
    argc = len(sys.argv)
    if argc >= 4 or argc < 2:
        print 'Simple tool for one-time converting txt-files to SystemDefinitions'
        print 'remeber to manually edit the outputs'
        print 'usage:', sys.argv[0], 'infile [outfile] '
        sys.exit(1)


    filename = sys.argv[1]

    if argc == 3:
        filename2 =  sys.argv[2]
    else:
        filename2, ext = os.path.splitext(filename)
        filename2 += ".xml"
    print "outfilename is %s" % filename2

    


    file = open (filename,"r")
    global DATA
    DATA = file.readlines()

    try:
        shutil.copyfile("dtd.xml", filename2)
    except:
        pass
    
    outfile = open(filename2,"a")
    component = ""
    compname = ""
    bld_path = ""
    
    outfile.write('<SystemDefinition name="SystemModel" schema="1.4.0">\n')
    outfile.write('  <systemModel>\n')
    outfile.write('<layer name="%s">\n' % os.path.basename(filename))


    #print DATA
    for line in DATA:
        # ignore outcommented lines in input 
        if '#Components' in line:
            continue
        if 'Component' in line:
            try:
                # we are expecting lines "Component /path/to/named/group componentName"
                component, bldpath, comname =  line.split()
                print ("prosessing component %s \n" % comname.strip())
                outfile.write('<unit unitID="%s_%s"  name="%s" bldFile="%s" mrp=""/> \n' % 
                              (os.path.basename(filename), comname.strip(), comname.strip(), bldpath.strip()))
            except:
                print ("Problems with Line:\n %s\n" % line)


    print "finishing"
    outfile.write('</component> \n')
    outfile.write('</module> \n')
    outfile.write('    </layer>\n')
    
    outfile.write('  </systemModel>\n')
    outfile.write('</SystemDefinition>\n')

    outfile.close()