handle multiple projects in one go. Submitted by: Frank Wierzbicki <wierzbickif@yahoo.com> git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268981 13f79535-47bb-0310-9956-ffa450edef68master
@@ -13,10 +13,12 @@ Changes that could break older environments: | |||
* several Zip methods have changed their signature as we now use a Zip | |||
package of our own that handles Unix permissions for directories. | |||
* The <pvcs> task has been move to a package of its own. | |||
Other changes: | |||
-------------- | |||
* New tasks: ear, p4counter, record | |||
* New tasks: ear, p4counter, record, cvspass | |||
* Ant now uses JAXP 1.1 | |||
@@ -42,6 +44,8 @@ Other changes: | |||
* <jar> now has a nested <metainf> element following the same idea as | |||
<war>'s <webinf>. | |||
* <pvcs> can now handle multiple projects. | |||
Fixed bugs: | |||
----------- | |||
@@ -3,7 +3,6 @@ | |||
<head> | |||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.2.18 i686) [Netscape]"> | |||
<title>PVCS task</title> | |||
</head> | |||
<body> | |||
@@ -132,6 +131,35 @@ tag expects the executables to be found using the PATH environment variable.</td | |||
<td VALIGN=TOP WIDTH="10%">No</td> | |||
</tr> | |||
</table> | |||
<h3><a name="nested">Nested Elements</a></h3> | |||
<h3>pvcsproject element</h3> | |||
<p><code>pvcs</code> supports a nested | |||
<code><pvcsproject></code> element, that represents a project | |||
within the PVCS repository to extract files from. By nesting multiple | |||
<code><pvcsproject></code> elements under the | |||
<code><pvcs></code> task, multiple projects can be | |||
specified.</p> | |||
<h3>Parameters</h3> | |||
<table BORDER CELLSPACING=0 CELLPADDING=2 > | |||
<tr> | |||
<td VALIGN=TOP WIDTH="12%"><b>Attribute</b></td> | |||
<td VALIGN=TOP WIDTH="78%"><b>Description</b></td> | |||
<td VALIGN=TOP WIDTH="10%"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP WIDTH="12%">name</td> | |||
<td VALIGN=TOP WIDTH="78%">The name of the pvcs project</td> | |||
<td VALIGN=TOP WIDTH="10%">Yes</td> | |||
</tr> | |||
</table> | |||
<h3> | |||
Examples</h3> | |||
@@ -143,7 +171,7 @@ repository. | |||
--> | |||
<br> <!-- =================================================================== | |||
--> | |||
<br> <target name="getlastes"> | |||
<br> <target name="getlatest"> | |||
<br> < pvcs repository="/mnt/pvcs" | |||
pvcsproject="/myprj"/> | |||
<br> </target></ul> | |||
@@ -164,6 +192,39 @@ Now run: | |||
Total time: 19 seconds</pre> | |||
This next example extracts the latest version of the files in the pvcs | |||
repository from two projects using nested <pvcsproject> elements. | |||
<ul> <!-- =================================================================== | |||
--> | |||
<br> <!-- Get latest from myprj and myprj2 | |||
--> | |||
<br> <!-- =================================================================== | |||
--> | |||
<br> <target name="getlatest2"> | |||
<br> <pvcs repository="/mnt/pvcs"> | |||
<br> <pvcsproject name="/myprj" /> | |||
<br> <pvcsproject name="/myprj2" /> | |||
<br> </pvcs> | |||
<br> </target></ul> | |||
Now run: | |||
<p> ant getlatest2 | |||
<p>This will cause the following output to appear: | |||
<pre> getlatest2: | |||
[pvcs] PVCS Version Manager (VMGUI) v6.6.10 (Build 870) for Windows NT/80x86 | |||
[pvcs] Copyright 1985-2000 MERANT. All rights reserved. | |||
[pvcs] PVCS Version Manager (get) v6.6.10 (Build 870) for Windows NT/80x86 | |||
[pvcs] Copyright 1985-2000 MERANT. All rights reserved. | |||
[pvcs] c:\myws\myprj\main.java <- C:\mypvcs\archives\myprj\main.java-arc | |||
[pvcs] rev 1.1 | |||
[pvcs] c:\myws\myprj\apache\tool.java <- C:\mypvcs\archives\myprj\apache\tool.java-arc | |||
[pvcs] rev 1.5 | |||
[pvcs] c:\myws\myprj2\apache\tool2.java <- C:\mypvcs\archives\myprj2\apache\tool2.java-arc | |||
[pvcs] rev 1.2 | |||
BUILD SUCCESSFUL | |||
Total time: 22 seconds</pre> | |||
<pre> | |||
</pre> | |||
@@ -78,7 +78,7 @@ csc=org.apache.tools.ant.taskdefs.optional.dotnet.CSharp | |||
ilasm=org.apache.tools.ant.taskdefs.optional.dotnet.Ilasm | |||
stylebook=org.apache.tools.ant.taskdefs.optional.StyleBook | |||
test=org.apache.tools.ant.taskdefs.optional.Test | |||
pvcs=org.apache.tools.ant.taskdefs.optional.Pvcs | |||
pvcs=org.apache.tools.ant.taskdefs.optional.pvcs.Pvcs | |||
p4change=org.apache.tools.ant.taskdefs.optional.perforce.P4Change | |||
p4label=org.apache.tools.ant.taskdefs.optional.perforce.P4Label | |||
p4have=org.apache.tools.ant.taskdefs.optional.perforce.P4Have | |||
@@ -55,9 +55,11 @@ | |||
* [Additional notices, if required by prior licensing conditions] | |||
* | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional; | |||
package org.apache.tools.ant.taskdefs.optional.pvcs; | |||
import java.io.*; | |||
import java.util.Enumeration; | |||
import java.util.Vector; | |||
import java.text.*; | |||
import java.util.Random; | |||
import org.apache.tools.ant.BuildException; | |||
@@ -78,6 +80,7 @@ public class Pvcs extends org.apache.tools.ant.Task { | |||
private String pvcsbin; | |||
private String repository; | |||
private String pvcsProject; | |||
private Vector pvcsProjects; | |||
private String workspace; | |||
private String force; | |||
private String promotiongroup; | |||
@@ -148,8 +151,22 @@ public class Pvcs extends org.apache.tools.ant.Task { | |||
if(getWorkspace()!=null) | |||
commandLine.createArgument().setValue("-sp"+getWorkspace()); | |||
commandLine.createArgument().setValue("-pr"+getRepository()); | |||
// default pvcs project is "/" | |||
if(getPvcsproject() == null && getPvcsprojects().isEmpty()) | |||
pvcsProject = "/"; | |||
if(getPvcsproject()!=null) | |||
commandLine.createArgument().setValue(getPvcsproject()); | |||
if(!getPvcsprojects().isEmpty()) { | |||
Enumeration e = getPvcsprojects().elements(); | |||
while (e.hasMoreElements()) { | |||
String projectName = ((PvcsProject)e.nextElement()).getName(); | |||
if (projectName == null || (projectName.trim()).equals("")) | |||
throw new BuildException("name is a required attribute of pvcsproject"); | |||
commandLine.createArgument().setValue(projectName); | |||
} | |||
} | |||
File tmp = null; | |||
try { | |||
@@ -163,10 +180,10 @@ public class Pvcs extends org.apache.tools.ant.Task { | |||
if(!tmp.exists()) | |||
throw new BuildException("Communication between ant and pvcs failed"); | |||
// Create foldes in workspace | |||
// Create foldes in workspace | |||
createFolders(tmp); | |||
// Launch get on output captured from PCLI lvf | |||
// Launch get on output captured from PCLI lvf | |||
commandLine.clearArgs(); | |||
commandLine.setExecutable(getExecutable(GET_EXE)); | |||
@@ -256,6 +273,14 @@ public class Pvcs extends org.apache.tools.ant.Task { | |||
pvcsProject = prj; | |||
} | |||
/** | |||
* Get name of the project in the PVCS repository | |||
* @return Vector | |||
*/ | |||
public Vector getPvcsprojects() { | |||
return pvcsProjects; | |||
} | |||
/** | |||
* Get name of the workspace to store the retrieved files | |||
* @return String | |||
@@ -362,13 +387,21 @@ public class Pvcs extends org.apache.tools.ant.Task { | |||
ignorerc=false; | |||
} | |||
/** | |||
* handles <pvcsproject> subelements | |||
* @param PvcsProject | |||
*/ | |||
public void addPvcsproject(PvcsProject p) { | |||
pvcsProjects.addElement(p); | |||
} | |||
/** | |||
* Creates a Pvcs object | |||
* Default PVCS project is "/" | |||
*/ | |||
public Pvcs() { | |||
super(); | |||
pvcsProject = "/"; | |||
pvcsProject = null; | |||
pvcsProjects = new Vector(); | |||
workspace = null; | |||
repository = null; | |||
pvcsbin = null; |
@@ -0,0 +1,77 @@ | |||
/* ==================================================================== | |||
* | |||
* The Apache Software License, Version 1.1 | |||
* | |||
* Copyright (c) 2001 The Apache Software Foundation. All rights | |||
* reserved. | |||
* | |||
* Redistribution and use in source and binary forms, with or without | |||
* modification, are permitted provided that the following conditions | |||
* are met: | |||
* | |||
* 1. Redistributions of source code must retain the above copyright | |||
* notice, this list of conditions and the following disclaimer. | |||
* | |||
* 2. Redistributions in binary form must reproduce the above copyright | |||
* notice, this list of conditions and the following disclaimer in | |||
* the documentation and/or other materials provided with the | |||
* distribution. | |||
* | |||
* 3. The end-user documentation included with the redistribution, if | |||
* any, must include the following acknowlegement: | |||
* "This product includes software developed by the | |||
* Apache Software Foundation (http://www.apache.org/)." | |||
* Alternately, this acknowlegement may appear in the software itself, | |||
* if and wherever such third-party acknowlegements normally appear. | |||
* | |||
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||
* Foundation" must not be used to endorse or promote products derived | |||
* from this software without prior written permission. For written | |||
* permission, please contact apache@apache.org. | |||
* | |||
* 5. Products derived from this software may not be called "Apache" | |||
* nor may "Apache" appear in their names without prior written | |||
* permission of the Apache Group. | |||
* | |||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
* SUCH DAMAGE. | |||
* ==================================================================== | |||
* | |||
* This software consists of voluntary contributions made by many | |||
* individuals on behalf of the Apache Software Foundation. For more | |||
* information on the Apache Software Foundation, please see | |||
* <http://www.apache.org/>. | |||
* | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional.pvcs; | |||
import org.apache.tools.ant.Project; | |||
/** | |||
* class to handle <pvcsprojec> elements | |||
*/ | |||
public class PvcsProject { | |||
private String name; | |||
public PvcsProject() { | |||
super(); | |||
} | |||
public void setName(String name) { | |||
PvcsProject.this.name = name; | |||
} | |||
public String getName() { | |||
return name; | |||
} | |||
} |