| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * https://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| package org.apache.ant.dotnet.build; |
| |
| import java.io.File; |
| import java.util.Iterator; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.w3c.dom.DocumentFragment; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.NodeList; |
| |
| /** |
| * Runs a NAnt build process. |
| */ |
| public class NAntTask extends AbstractBuildTask { |
| |
| public NAntTask() { |
| super(); |
| } |
| |
| protected String getExecutable() { |
| return "NAnt.exe"; |
| } |
| |
| protected String[] getBuildfileArguments(File buildFile) { |
| if (buildFile != null) { |
| return new String[] { |
| "-buildfile:" + buildFile.getAbsolutePath() |
| }; |
| } else { |
| return new String[0]; |
| } |
| } |
| |
| protected String[] getTargetArguments(List targets) { |
| ArrayList al = new ArrayList(targets.size()); |
| Iterator iter = targets.iterator(); |
| while (iter.hasNext()) { |
| AbstractBuildTask.Target t = (AbstractBuildTask.Target) iter.next(); |
| al.add(t.getName()); |
| } |
| return (String[]) al.toArray(new String[al.size()]); |
| } |
| |
| protected String[] getPropertyArguments(List properties) { |
| ArrayList al = new ArrayList(properties.size()); |
| Iterator iter = properties.iterator(); |
| while (iter.hasNext()) { |
| AbstractBuildTask.Property p = |
| (AbstractBuildTask.Property) iter.next(); |
| al.add("-D:" + p.getName() + "=" + p.getValue()); |
| } |
| return (String[]) al.toArray(new String[al.size()]); |
| } |
| |
| /** |
| * Turn the DocumentFragment into a DOM tree suitable as a build |
| * file when serialized. |
| * |
| * <p>If we have exactly one <project> child, return that. |
| * Otherwise assume that this is a valid build file snippet that |
| * just needs an empty project wrapped around it.</p> |
| */ |
| protected Element makeTree(DocumentFragment f) { |
| NodeList nl = f.getChildNodes(); |
| if (nl.getLength() == 1 |
| && nl.item(0).getNodeType() == Node.ELEMENT_NODE |
| && nl.item(0).getNodeName().equals("project")) { |
| return (Element) nl.item(0); |
| } else { |
| Element e = f.getOwnerDocument().createElement("project"); |
| e.appendChild(f); |
| return e; |
| } |
| } |
| } |