bodewig 2002/11/07 07:59:47
Modified: . WHATSNEW
docs/manual optionaltasklist.html
src/main/org/apache/tools/ant/taskdefs defaults.properties
Added: docs/manual/OptionalTasks chgrp.html chown.html
src/main/org/apache/tools/ant/taskdefs/optional/unix
AbstractAccessTask.java Chgrp.java Chown.java
Log:
New tasks <chown> and <chgrp>
PR: 9809
Submitted by: Gus Heck <gus.heck at olin.edu>
Revision Changes Path
1.311 +2 -0 jakarta-ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/jakarta-ant/WHATSNEW,v
retrieving revision 1.310
retrieving revision 1.311
diff -u -r1.310 -r1.311
--- WHATSNEW 7 Nov 2002 15:18:47 -0000 1.310
+++ WHATSNEW 7 Nov 2002 15:59:46 -0000 1.311
@@ -89,6 +89,8 @@
* new task <symlink> that creates and maintains symbolic links.
+* new tasks <chown> and <chgrp> which are wrappers of the Unix commands.
+
Changes from Ant 1.5.1Beta1 to 1.5.1
====================================
1.33 +2 -0 jakarta-ant/docs/manual/optionaltasklist.html
Index: optionaltasklist.html
===================================================================
RCS file: /home/cvs/jakarta-ant/docs/manual/optionaltasklist.html,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- optionaltasklist.html 6 Nov 2002 15:07:23 -0000 1.32
+++ optionaltasklist.html 7 Nov 2002 15:59:46 -0000 1.33
@@ -18,6 +18,8 @@
<a href="OptionalTasks/dotnet.html">.NET Tasks</a><br>
<a href="OptionalTasks/antlr.html">ANTLR</a><br>
<a href="OptionalTasks/cab.html">Cab</a><br>
+<a href="OptionalTasks/chgrp.html">Chgrp</a><br>
+<a href="OptionalTasks/chown.html">Chown</a><br>
<a href="OptionalTasks/clearcase.html">Clearcase Tasks</a><br>
<a href="OptionalTasks/ccm.html">Continuus/Synergy Tasks</a><br>
<a href="OptionalTasks/depend.html">Depend</a><br>
1.1 jakarta-ant/docs/manual/OptionalTasks/chgrp.html
Index: chgrp.html
===================================================================
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Chgrp Task</title>
</head>
<body>
<h2><a name="Chgrp">Chgrp</a></h2>
<h3>Description</h3>
<p>Changes the group of a file or all files inside specified
directories. Right now it has effect only under Unix. The group
atribute is equivalent to the coresponding argument for the chgrp
command.</p>
<p><a href="../CoreTypes/fileset.html">FileSet</a> can be specified
using nested <code><fileset></code> elements.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td valign="top"><b>Attribute</b></td>
<td valign="top"><b>Description</b></td>
<td align="center" valign="top"><b>Required</b></td>
</tr>
<tr>
<td valign="top">file</td>
<td valign="top">the file of which the group must be changed.</td>
<td valign="top" valign="middle" rowspan="2">one of the two or
nested <code><fileset></code> elements.</td>
</tr>
<tr>
<td valign="top">dir</td>
<td valign="top">the directory whose group must be changed.</td>
</tr>
<tr>
<td valign="top">group</td>
<td valign="top">the new group.</td>
<td valign="top" align="center">Yes</td>
</tr>
<tr>
<td valign="top">parallel</td>
<td valign="top">process all specified files using a single
<code>chgrp</code> command. Defaults to true.</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">type</td>
<td valign="top">One of <i>file</i>, <i>dir</i> or
<i>both</i>. If set to <i>file</i>, only the group of
plain files are going to be changed. If set to <i>dir</i>, only
the directories are considered.</td>
<td align="center" valign="top">No, default is <i>file</i></td>
</tr>
</table>
<h3>Examples</h3>
<blockquote>
<p><code><chgrp file="${dist}/start.sh"
group="coders"/></code></p>
</blockquote>
<p>makes the "start.sh" file belong to the coders group on a
UNIX system.</p>
<blockquote>
<pre>
<chgrp owner="coderjoe">
<fileset dir="${dist}/bin"
includes="**/*.sh"/>
</chgrp>
</pre>
</blockquote>
<p>makes all ".sh" files below <code>${dist}/bin</code>
belong to the coders group on a UNIX system.</p>
<blockquote>
<pre>
<chgrp group="coders">
<fileset dir="shared/sources1">
<exclude name="**/trial/**"/>
</fileset>
<fileset refid="other.shared.sources"/>
</chgrp>
</pre>
</blockquote>
<p>makes all files below <code>shared/sources1</code> (except those
below any directory named trial) belong to the coders group on a UNIX
system. In addition all files belonging to a FileSet
with <code>id</code> <code>other.shared.sources</code> get the same
group.</p>
<hr>
<p align="center">Copyright © 2002 Apache Software
Foundation. All rights Reserved.</p>
</body>
</html>
1.1 jakarta-ant/docs/manual/OptionalTasks/chown.html
Index: chown.html
===================================================================
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Chown Task</title>
</head>
<body>
<h2><a name="Chown">Chown</a></h2>
<h3>Description</h3>
<p>Changes the owner of a file or all files inside specified
directories. Right now it has effect only under Unix. The owner
atribute is equivalent to the coresponding argument for the chown
command.</p>
<p><a href="../CoreTypes/fileset.html">FileSet</a> can be specified
using nested <code><fileset></code> elements.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td valign="top"><b>Attribute</b></td>
<td valign="top"><b>Description</b></td>
<td align="center" valign="top"><b>Required</b></td>
</tr>
<tr>
<td valign="top">file</td>
<td valign="top">the file of which the owner must be changed.</td>
<td valign="top" valign="middle" rowspan="2">one of the two or
nested <code><fileset></code> elements.</td>
</tr>
<tr>
<td valign="top">dir</td>
<td valign="top">the directory of which the owner must be changed.</td>
</tr>
<tr>
<td valign="top">owner</td>
<td valign="top">the new owner.</td>
<td valign="top" align="center">Yes</td>
</tr>
<tr>
<td valign="top">parallel</td>
<td valign="top">process all specified files using a single
<code>chown</code> command. Defaults to true.</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">type</td>
<td valign="top">One of <i>file</i>, <i>dir</i> or
<i>both</i>. If set to <i>file</i>, only the owner of
plain files are going to be changed. If set to <i>dir</i>, only
the directories are considered.</td>
<td align="center" valign="top">No, default is <i>file</i></td>
</tr>
</table>
<h3>Examples</h3>
<blockquote>
<p><code><chown file="${dist}/start.sh"
owner="coderjoe"/></code></p>
</blockquote>
<p>makes the "start.sh" file belong to coderjoe on a
UNIX system.</p>
<blockquote>
<pre>
<chown owner="coderjoe">
<fileset dir="${dist}/bin"
includes="**/*.sh"/>
</chown>
</pre>
</blockquote>
<p>makes all ".sh" files below <code>${dist}/bin</code>
belong to coderjoe on a UNIX system.</p>
<blockquote>
<pre>
<chown owner="coderjoe">
<fileset dir="shared/sources1">
<exclude name="**/trial/**"/>
</fileset>
<fileset refid="other.shared.sources"/>
</chown>
</pre>
</blockquote>
<p>makes all files below <code>shared/sources1</code> (except those
below any directory named trial) belong to coderjoe on a UNIX
system. In addition all files belonging to a FileSet
with <code>id</code> <code>other.shared.sources</code> get the same
owner.</p>
<hr>
<p align="center">Copyright © 2002 Apache Software
Foundation. All rights Reserved.</p>
</body>
</html>
1.134 +2 -0
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties
Index: defaults.properties
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -r1.133 -r1.134
--- defaults.properties 6 Nov 2002 15:07:23 -0000 1.133
+++ defaults.properties 7 Nov 2002 15:59:47 -0000 1.134
@@ -172,6 +172,8 @@
setproxy=org.apache.tools.ant.taskdefs.optional.net.SetProxy
vbc=org.apache.tools.ant.taskdefs.optional.dotnet.VisualBasicCompile
symlink=org.apache.tools.ant.taskdefs.optional.unix.Symlink
+chgrp=org.apache.tools.ant.taskdefs.optional.unix.Chgrp
+chown=org.apache.tools.ant.taskdefs.optional.unix.Chown
# deprecated ant tasks (kept for back compatibility)
starteam=org.apache.tools.ant.taskdefs.optional.scm.AntStarTeamCheckOut
1.1
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/unix/AbstractAccessTask.java
Index: AbstractAccessTask.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 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", "Ant", 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 [EMAIL PROTECTED]
*
* 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/>.
*/
/*
* Since the initial version of this file was deveolped on the clock on
* an NSF grant I should say the following boilerplate:
*
* This material is based upon work supported by the National Science
* Foundaton under Grant No. EIA-0196404. Any opinions, findings, and
* conclusions or recommendations expressed in this material are those
* of the author and do not necessarily reflect the views of the
* National Science Foundation.
*/
package org.apache.tools.ant.taskdefs.optional.unix;
import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.ExecuteOn;
import org.apache.tools.ant.taskdefs.condition.Os;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.FileSet;
/**
* @author Patrick G. Heck <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @since Ant 1.6
*
* @ant.task category="filesystem"
*/
public abstract class AbstractAccessTask
extends org.apache.tools.ant.taskdefs.ExecuteOn {
/**
* Chmod task for setting file and directory permissions.
*/
public AbstractAccessTask() {
super.setParallel(true);
super.setSkipEmptyFilesets(true);
}
public void setFile(File src) {
FileSet fs = new FileSet();
fs.setDir(new File(src.getParent()));
fs.createInclude().setName(src.getName());
addFileset(fs);
}
public void setDir(File src) {
FileSet fs = new FileSet();
fs.setDir(new File(src.getParent()));
fs.createInclude().setName(src.getName());
addFileset(fs);
}
public void setCommand(Commandline cmdl) {
throw new BuildException(taskType +
" doesn\'t support the command attribute",
getLocation());
}
public void setSkipEmptyFilesets(boolean skip) {
throw new BuildException(taskType + " doesn\'t support the "
+ "skipemptyfileset attribute",
getLocation());
}
protected boolean isValidOs() {
return Os.isFamily("unix") && super.isValidOs();
}
}
1.1
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/unix/Chgrp.java
Index: Chgrp.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 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", "Ant", 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 [EMAIL PROTECTED]
*
* 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/>.
*/
/*
* Since the initial version of this file was deveolped on the clock on
* an NSF grant I should say the following boilerplate:
*
* This material is based upon work supported by the National Science
* Foundaton under Grant No. EIA-0196404. Any opinions, findings, and
* conclusions or recommendations expressed in this material are those
* of the author and do not necessarily reflect the views of the
* National Science Foundation.
*/
package org.apache.tools.ant.taskdefs.optional.unix;
import org.apache.tools.ant.BuildException;
/**
* Chgrp equivalent for unix-like environments.
*
* @author Patrick G. Heck
* <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
*
* @since Ant 1.6
*
* @ant.task category="filesystem"
*/
public class Chgrp extends AbstractAccessTask {
private boolean haveGroup = false;
/**
* Chgrp task for setting unix group of a file.
*/
public Chgrp() {
super.setExecutable("chgrp");
}
/**
* Set the group atribute.
*
* @param group The new group for the file(s) or directory(ies)
*/
public void setGroup(String group) {
createArg().setValue(group);
haveGroup = true;
}
protected void checkConfiguration() {
if (!haveGroup) {
throw new BuildException("Required attribute group not set in "+
"chgrp", getLocation());
}
super.checkConfiguration();
}
/**
* We don't want to expose the executable atribute, so overide it.
*/
public void setExecutable(String e) {
throw new BuildException(taskType +
" doesn\'t support the executable attribute",
getLocation());
}
}
1.1
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/unix/Chown.java
Index: Chown.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 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", "Ant", 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 [EMAIL PROTECTED]
*
* 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/>.
*/
/*
* Since the initial version of this file was deveolped on the clock on
* an NSF grant I should say the following boilerplate:
*
* This material is based upon work supported by the National Science
* Foundaton under Grant No. EIA-0196404. Any opinions, findings, and
* conclusions or recommendations expressed in this material are those
* of the author and do not necessarily reflect the views of the
* National Science Foundation.
*/
package org.apache.tools.ant.taskdefs.optional.unix;
import java.io.File;
import org.apache.tools.ant.BuildException;
/**
* Chown equivalent for unix-like environments.
*
* @author Patrick G. Heck
* <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
*
* @since Ant 1.6
*
* @ant.task category="filesystem"
*/
public class Chown extends AbstractAccessTask {
private boolean haveOwner = false;
/**
* Chown task for setting file and directory permissions.
*/
public Chown() {
super.setExecutable("chown");
}
/**
* Set the owner atribute.
*
* @param owner The new owner for the file(s) or directory(ies)
*/
public void setOwner(String owner) {
createArg().setValue(owner);
haveOwner = true;
}
protected void checkConfiguration() {
if (!haveOwner) {
throw new BuildException("Required attribute owner not set in" +
" chown", getLocation());
}
super.checkConfiguration();
}
/**
* We don't want to expose the executable atribute, so overide it.
*/
public void setExecutable(String e) {
throw new BuildException(taskType +
" doesn\'t support the executable attribute",
getLocation());
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>