diff --git a/WHATSNEW b/WHATSNEW index 69a05a373..054242e25 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -89,6 +89,8 @@ Other changes: * new task that creates and maintains symbolic links. +* new tasks and which are wrappers of the Unix commands. + Changes from Ant 1.5.1Beta1 to 1.5.1 ==================================== diff --git a/docs/manual/OptionalTasks/chgrp.html b/docs/manual/OptionalTasks/chgrp.html new file mode 100644 index 000000000..8e3be3043 --- /dev/null +++ b/docs/manual/OptionalTasks/chgrp.html @@ -0,0 +1,95 @@ + + + + +Chgrp Task + + + + +

Chgrp

+

Description

+ +

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.

+ +

FileSet can be specified +using nested <fileset> elements.

+ +

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescriptionRequired
filethe file of which the group must be changed.one of the two or + nested <fileset> elements.
dirthe directory whose group must be changed.
groupthe new group.Yes
parallelprocess all specified files using a single + chgrp command. Defaults to true.No
typeOne of file, dir or + both. If set to file, only the group of + plain files are going to be changed. If set to dir, only + the directories are considered.No, default is file
+

Examples

+
+

<chgrp file="${dist}/start.sh" group="coders"/>

+
+

makes the "start.sh" file belong to the coders group on a +UNIX system.

+
+
+    <chgrp owner="coderjoe">
+      <fileset dir="${dist}/bin" includes="**/*.sh"/>
+    </chgrp>
+
+
+

makes all ".sh" files below ${dist}/bin +belong to the coders group on a UNIX system.

+
+
+<chgrp group="coders">
+  <fileset dir="shared/sources1">
+    <exclude name="**/trial/**"/>
+  </fileset>
+  <fileset refid="other.shared.sources"/>
+</chgrp>
+
+
+

makes all files below shared/sources1 (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 id other.shared.sources get the same +group.

+ +
+

Copyright © 2002 Apache Software +Foundation. All rights Reserved.

+ + + + diff --git a/docs/manual/OptionalTasks/chown.html b/docs/manual/OptionalTasks/chown.html new file mode 100644 index 000000000..84b4231a8 --- /dev/null +++ b/docs/manual/OptionalTasks/chown.html @@ -0,0 +1,94 @@ + + + + +Chown Task + + + + +

Chown

+

Description

+ +

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.

+ +

FileSet can be specified +using nested <fileset> elements.

+ +

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescriptionRequired
filethe file of which the owner must be changed.one of the two or + nested <fileset> elements.
dirthe directory of which the owner must be changed.
ownerthe new owner.Yes
parallelprocess all specified files using a single + chown command. Defaults to true.No
typeOne of file, dir or + both. If set to file, only the owner of + plain files are going to be changed. If set to dir, only + the directories are considered.No, default is file
+

Examples

+
+

<chown file="${dist}/start.sh" owner="coderjoe"/>

+
+

makes the "start.sh" file belong to coderjoe on a +UNIX system.

+
+
+    <chown owner="coderjoe">
+      <fileset dir="${dist}/bin" includes="**/*.sh"/>
+    </chown>
+
+
+

makes all ".sh" files below ${dist}/bin +belong to coderjoe on a UNIX system.

+
+
+<chown owner="coderjoe">
+  <fileset dir="shared/sources1">
+    <exclude name="**/trial/**"/>
+  </fileset>
+  <fileset refid="other.shared.sources"/>
+</chown>
+
+
+

makes all files below shared/sources1 (except those +below any directory named trial) belong to coderjoe on a UNIX +system. In addition all files belonging to a FileSet +with id other.shared.sources get the same +owner.

+
+

Copyright © 2002 Apache Software +Foundation. All rights Reserved.

+ + + + diff --git a/docs/manual/optionaltasklist.html b/docs/manual/optionaltasklist.html index ff3eeb625..638dafb43 100644 --- a/docs/manual/optionaltasklist.html +++ b/docs/manual/optionaltasklist.html @@ -18,6 +18,8 @@ .NET Tasks
ANTLR
Cab
+Chgrp
+Chown
Clearcase Tasks
Continuus/Synergy Tasks
Depend
diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties index f07d56284..caa877ad4 100644 --- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties +++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties @@ -172,6 +172,8 @@ jarlib-resolve=org.apache.tools.ant.taskdefs.optional.extension.JarLibResolveTas 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 diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/unix/AbstractAccessTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/unix/AbstractAccessTask.java new file mode 100644 index 000000000..cd5a9f475 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/optional/unix/AbstractAccessTask.java @@ -0,0 +1,123 @@ +/* + * 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 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 + * . + */ + +/* + * 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 gus.heck@olin.edu + * @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(); + } +} diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/unix/Chgrp.java b/src/main/org/apache/tools/ant/taskdefs/optional/unix/Chgrp.java new file mode 100644 index 000000000..b7b9b32ab --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/optional/unix/Chgrp.java @@ -0,0 +1,117 @@ +/* + * 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 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 + * . + */ + +/* + * 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 + * gus.heck@olin.edu + * + * @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()); + } +} diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/unix/Chown.java b/src/main/org/apache/tools/ant/taskdefs/optional/unix/Chown.java new file mode 100644 index 000000000..209ade428 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/optional/unix/Chown.java @@ -0,0 +1,119 @@ +/* + * 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 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 + * . + */ + +/* + * 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 + * gus.heck@olin.edu + * + * @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()); + } +}