git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271347 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -1,188 +0,0 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.unix; | |||
| import java.io.File; | |||
| import java.io.IOException; | |||
| import org.apache.aut.nativelib.Os; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.Pattern; | |||
| import org.apache.myrmidon.framework.PatternSet; | |||
| import org.apache.tools.ant.taskdefs.exec.Execute; | |||
| import org.apache.tools.ant.taskdefs.exec.ExecuteOn; | |||
| import org.apache.tools.ant.types.Argument; | |||
| import org.apache.tools.ant.types.FileSet; | |||
| /** | |||
| * Chmod equivalent for unix-like environments. | |||
| * | |||
| * @author costin@eng.sun.com | |||
| * @author Mariusz Nowostawski (Marni) <a | |||
| * href="mailto:mnowostawski@infoscience.otago.ac.nz"> | |||
| * mnowostawski@infoscience.otago.ac.nz</a> | |||
| * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||
| */ | |||
| public class Chmod | |||
| extends ExecuteOn | |||
| { | |||
| private FileSet m_defaultSet = new FileSet(); | |||
| private boolean m_defaultSetDefined; | |||
| private boolean m_havePerm; | |||
| public Chmod() | |||
| throws TaskException | |||
| { | |||
| super.setExecutable( "chmod" ); | |||
| super.setParallel( true ); | |||
| super.setSkipEmptyFilesets( true ); | |||
| } | |||
| /** | |||
| * Sets whether default exclusions should be used or not. | |||
| * | |||
| * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions | |||
| * should be used, "false"|"off"|"no" when they shouldn't be used. | |||
| */ | |||
| public void setDefaultExcludes( boolean useDefaultExcludes ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.setDefaultExcludes( useDefaultExcludes ); | |||
| } | |||
| public void setDir( File src ) | |||
| { | |||
| m_defaultSet.setDir( src ); | |||
| } | |||
| /** | |||
| * Sets the set of exclude patterns. Patterns may be separated by a comma or | |||
| * a space. | |||
| */ | |||
| public void setExcludes( String excludes ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.setExcludes( excludes ); | |||
| } | |||
| public void setExecutable( String e ) | |||
| throws TaskException | |||
| { | |||
| throw new TaskException( getContext().getName() + " doesn\'t support the executable attribute" ); | |||
| } | |||
| public void setFile( File src ) | |||
| { | |||
| final FileSet fileSet = new FileSet(); | |||
| fileSet.setDir( new File( src.getParent() ) ); | |||
| fileSet.addInclude( new Pattern( src.getName() ) ); | |||
| addFileset( fileSet ); | |||
| } | |||
| /** | |||
| * Sets the set of include patterns. Patterns may be separated by a comma or | |||
| * a space. | |||
| * | |||
| * @param includes the string containing the include patterns | |||
| */ | |||
| public void setIncludes( String includes ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.setIncludes( includes ); | |||
| } | |||
| public void setPerm( String perm ) | |||
| { | |||
| addArg( new Argument( perm ) ); | |||
| m_havePerm = true; | |||
| } | |||
| public void setSkipEmptyFilesets( final boolean skip ) | |||
| { | |||
| final String message = getContext().getName() + " doesn\'t support the skipemptyfileset attribute"; | |||
| throw new IllegalArgumentException( message ); | |||
| } | |||
| /** | |||
| * add a name entry on the exclude list | |||
| */ | |||
| public void addExclude( final Pattern pattern ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.addExclude( pattern ); | |||
| } | |||
| /** | |||
| * add a name entry on the include list | |||
| */ | |||
| public void addInclude( final Pattern pattern ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.addInclude( pattern ); | |||
| } | |||
| /** | |||
| * add a set of patterns | |||
| */ | |||
| public void addPatternSet( final PatternSet set ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.addPatternSet( set ); | |||
| } | |||
| public void execute() | |||
| throws TaskException | |||
| { | |||
| if( m_defaultSetDefined || m_defaultSet.getDir() == null ) | |||
| { | |||
| super.execute(); | |||
| } | |||
| else if( isValidOs() ) | |||
| { | |||
| // we are chmodding the given directory | |||
| final Argument argument = | |||
| new Argument( m_defaultSet.getDir().getPath() ); | |||
| addArg( argument ); | |||
| final Execute execute = prepareExec(); | |||
| try | |||
| { | |||
| execute.setCommandline( getCommand().getCommandline() ); | |||
| runExecute( execute ); | |||
| } | |||
| catch( final IOException ioe ) | |||
| { | |||
| final String message = "Execute failed: " + ioe; | |||
| throw new TaskException( message, ioe ); | |||
| } | |||
| finally | |||
| { | |||
| // close the output file if required | |||
| logFlush(); | |||
| } | |||
| } | |||
| } | |||
| protected boolean isValidOs() | |||
| { | |||
| return Os.isFamily( "unix" ) && super.isValidOs(); | |||
| } | |||
| protected void validate() | |||
| throws TaskException | |||
| { | |||
| if( !m_havePerm ) | |||
| { | |||
| throw new TaskException( "Required attribute perm not set in chmod" ); | |||
| } | |||
| if( m_defaultSetDefined && m_defaultSet.getDir() != null ) | |||
| { | |||
| addFileset( m_defaultSet ); | |||
| } | |||
| super.validate(); | |||
| } | |||
| } | |||
| @@ -1,188 +0,0 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.unix; | |||
| import java.io.File; | |||
| import java.io.IOException; | |||
| import org.apache.aut.nativelib.Os; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.Pattern; | |||
| import org.apache.myrmidon.framework.PatternSet; | |||
| import org.apache.tools.ant.taskdefs.exec.Execute; | |||
| import org.apache.tools.ant.taskdefs.exec.ExecuteOn; | |||
| import org.apache.tools.ant.types.Argument; | |||
| import org.apache.tools.ant.types.FileSet; | |||
| /** | |||
| * Chmod equivalent for unix-like environments. | |||
| * | |||
| * @author costin@eng.sun.com | |||
| * @author Mariusz Nowostawski (Marni) <a | |||
| * href="mailto:mnowostawski@infoscience.otago.ac.nz"> | |||
| * mnowostawski@infoscience.otago.ac.nz</a> | |||
| * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||
| */ | |||
| public class Chmod | |||
| extends ExecuteOn | |||
| { | |||
| private FileSet m_defaultSet = new FileSet(); | |||
| private boolean m_defaultSetDefined; | |||
| private boolean m_havePerm; | |||
| public Chmod() | |||
| throws TaskException | |||
| { | |||
| super.setExecutable( "chmod" ); | |||
| super.setParallel( true ); | |||
| super.setSkipEmptyFilesets( true ); | |||
| } | |||
| /** | |||
| * Sets whether default exclusions should be used or not. | |||
| * | |||
| * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions | |||
| * should be used, "false"|"off"|"no" when they shouldn't be used. | |||
| */ | |||
| public void setDefaultExcludes( boolean useDefaultExcludes ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.setDefaultExcludes( useDefaultExcludes ); | |||
| } | |||
| public void setDir( File src ) | |||
| { | |||
| m_defaultSet.setDir( src ); | |||
| } | |||
| /** | |||
| * Sets the set of exclude patterns. Patterns may be separated by a comma or | |||
| * a space. | |||
| */ | |||
| public void setExcludes( String excludes ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.setExcludes( excludes ); | |||
| } | |||
| public void setExecutable( String e ) | |||
| throws TaskException | |||
| { | |||
| throw new TaskException( getContext().getName() + " doesn\'t support the executable attribute" ); | |||
| } | |||
| public void setFile( File src ) | |||
| { | |||
| final FileSet fileSet = new FileSet(); | |||
| fileSet.setDir( new File( src.getParent() ) ); | |||
| fileSet.addInclude( new Pattern( src.getName() ) ); | |||
| addFileset( fileSet ); | |||
| } | |||
| /** | |||
| * Sets the set of include patterns. Patterns may be separated by a comma or | |||
| * a space. | |||
| * | |||
| * @param includes the string containing the include patterns | |||
| */ | |||
| public void setIncludes( String includes ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.setIncludes( includes ); | |||
| } | |||
| public void setPerm( String perm ) | |||
| { | |||
| addArg( new Argument( perm ) ); | |||
| m_havePerm = true; | |||
| } | |||
| public void setSkipEmptyFilesets( final boolean skip ) | |||
| { | |||
| final String message = getContext().getName() + " doesn\'t support the skipemptyfileset attribute"; | |||
| throw new IllegalArgumentException( message ); | |||
| } | |||
| /** | |||
| * add a name entry on the exclude list | |||
| */ | |||
| public void addExclude( final Pattern pattern ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.addExclude( pattern ); | |||
| } | |||
| /** | |||
| * add a name entry on the include list | |||
| */ | |||
| public void addInclude( final Pattern pattern ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.addInclude( pattern ); | |||
| } | |||
| /** | |||
| * add a set of patterns | |||
| */ | |||
| public void addPatternSet( final PatternSet set ) | |||
| { | |||
| m_defaultSetDefined = true; | |||
| m_defaultSet.addPatternSet( set ); | |||
| } | |||
| public void execute() | |||
| throws TaskException | |||
| { | |||
| if( m_defaultSetDefined || m_defaultSet.getDir() == null ) | |||
| { | |||
| super.execute(); | |||
| } | |||
| else if( isValidOs() ) | |||
| { | |||
| // we are chmodding the given directory | |||
| final Argument argument = | |||
| new Argument( m_defaultSet.getDir().getPath() ); | |||
| addArg( argument ); | |||
| final Execute execute = prepareExec(); | |||
| try | |||
| { | |||
| execute.setCommandline( getCommand().getCommandline() ); | |||
| runExecute( execute ); | |||
| } | |||
| catch( final IOException ioe ) | |||
| { | |||
| final String message = "Execute failed: " + ioe; | |||
| throw new TaskException( message, ioe ); | |||
| } | |||
| finally | |||
| { | |||
| // close the output file if required | |||
| logFlush(); | |||
| } | |||
| } | |||
| } | |||
| protected boolean isValidOs() | |||
| { | |||
| return Os.isFamily( "unix" ) && super.isValidOs(); | |||
| } | |||
| protected void validate() | |||
| throws TaskException | |||
| { | |||
| if( !m_havePerm ) | |||
| { | |||
| throw new TaskException( "Required attribute perm not set in chmod" ); | |||
| } | |||
| if( m_defaultSetDefined && m_defaultSet.getDir() != null ) | |||
| { | |||
| addFileset( m_defaultSet ); | |||
| } | |||
| super.validate(); | |||
| } | |||
| } | |||