#!/usr/bin/env python | |
# Copyright (c) 2007, Intel Corporation | |
# All rights reserved. This program and the accompanying materials | |
# are licensed and made available under the terms and conditions of the BSD License | |
# which accompanies this distribution. The full text of the license may be found at | |
# http://opensource.org/licenses/bsd-license.php | |
# | |
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
"""Ant Tasks Dom Element""" | |
import xml.dom.minidom, os | |
class AntTask: | |
def __init__(self, document, _name, _body=None, **_attributes): | |
"""Instantiate an Ant task element | |
document, _name=task name, _body=task body, **_attributes=task attributes | |
""" | |
self.Document = document | |
self.Root = "" | |
if _name == None or _name == "": | |
raise Exception("No Ant task name") | |
taskElement = self.Document.createElement(_name) | |
for name in _attributes: | |
taskElement.setAttribute(name, _attributes[name]) | |
if _body != None: | |
if isinstance(_body, str): | |
text = self.Document.createTextNode(_body) | |
taskElement.appendChild(text) | |
elif isinstance(_body, list): | |
for subtask in _body: | |
taskElement.appendChild(subtask) | |
self.Root = taskElement | |
def SubTask(self, _name, _body=None, **_attributes): | |
"""Insert a sub-task into this task""" | |
newTask = AntTask(self.Document, _name , _body, **_attributes) | |
self.Root.appendChild(newTask.Root) | |
return newTask | |
def AddSubTask(self, subTask): | |
"""Insert a existing sub-task into this task""" | |
self.Root.appendChild(subTask.Root.cloneNode(True)) | |
return subTask | |
def Comment(self, string): | |
"""Generate a XML comment""" | |
self.Root.appendChild(self.Document.createComment(string)) | |
def Blankline(self): | |
"""Generate a blank line""" | |
self.Root.appendChild(self.Document.createTextNode("")) | |
class AntBuildFile(AntTask): | |
_FileComment = "DO NOT EDIT\nThis file is auto-generated by the build utility\n\nAbstract:\nAuto-generated ANT build file for building Framework modules and platforms\n" | |
def __init__(self, name, basedir=".", default="all"): | |
"""Instantiate an Ant build.xml | |
name=project name, basedir=project default directory, default=default target of this project | |
""" | |
self.Document = xml.dom.minidom.getDOMImplementation().createDocument(None, "project", None) | |
self.Root = self.Document.documentElement | |
self.Document.insertBefore(self.Document.createComment(self._FileComment), self.Root) | |
self.Root.setAttribute("name", name) | |
self.Root.setAttribute("basedir", basedir) | |
self.Root.setAttribute("default", default) | |
def Create(self, file): | |
"""Generate the build.xml using given file path""" | |
buildFileDir = os.path.dirname(file) | |
if not os.path.exists(buildFileDir): | |
os.makedirs(buildFileDir) | |
f = open(file, "w") | |
f.write(self.Document.toprettyxml(2*" ", encoding="UTF-8")) | |
f.close() |