Package integration :: Module ant |
[hide private]
[frames] | no frames]

# Source Code for Module integration.ant

     1  #============================================================================
     2  #Name        : ant.py
     3  #Part of     : Helium
     4
     5  #Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     6  #All rights reserved.
     7  #This component and the accompanying materials are made available
     8  #under the terms of the License "Eclipse Public License v1.0"
     9  #which accompanies this distribution, and is available
    10  #at the URL "http://www.eclipse.org/legal/epl-v10.html".
    11  #
    12  #Initial Contributors:
    13  #Nokia Corporation - initial contribution.
    14  #
    15  #Contributors:
    16  #
    17  #Description:
    18  #===============================================================================
    19
    20  """ Quality Ant task implementation. """
    21  import integration.quality
    22  import os
    23  import traceback
    24
    25 -def check_build_duplicates_task(project, task, attributes, elements):
    26      """ This is the implementation of the checkBuildDuplicatesMacro Ant task."""
    27      try:
    28          if attributes.get('output') == None:
    29              raise Exception("'output' attribute is not defined.")
    30          output = str(attributes.get('output'))
    31          task.log("Creating %s" % output)
    32          output = open(output, "w+")
    33          output.write("<?xml version=\"1.0\"?>\n<buildconflicts>\n")
    34          components_per_file = {}
    35          for eid in range(elements.get("fileset").size()):
    36              dirscanner = elements.get("fileset").get(int(eid)).getDirectoryScanner(project)
    37              dirscanner.scan()
    38              for jfilename in dirscanner.getIncludedFiles():
    39                  filename = str(jfilename)
    40                  task.log("Parsing %s" % filename)
    41                  filename = os.path.join(str(dirscanner.getBasedir()), filename)
    42                  parser = integration.quality.AbldWhatParser(open(filename, 'r'))
    43                  parser.components_per_file = components_per_file
    44                  parser.parse()
    45
    46          for filename in components_per_file.keys():
    47              if len(components_per_file[filename]) > 1:
    48                  output.write("    <file name=\"%s\">\n" % filename)
    49                  output.write("".join(map(lambda x: "        <component name=\"%s\"/>\n" % x, components_per_file[filename])))
    50                  output.write("    </file>\n")
    51          output.write("</buildconflicts>\n")
    52          output.close()
    53      except Exception, exc:
    54          task.log('ERROR: %s' % exc)
    55          traceback.print_exc()
    56          raise exc
    57