You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2001/12/17 10:13:57 UTC
cvs commit: jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/cvslib Cvs.java
donaldp 01/12/17 01:13:57
Modified: proposal/myrmidon/src/java/org/apache/antlib/cvslib Cvs.java
Log:
Start to convert into a myrmidon task.
Remove notion of failonerror/output/input etc. Will handle ina different way in ant2.
Revision Changes Path
1.2 +125 -198 jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/cvslib/Cvs.java
Index: Cvs.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/cvslib/Cvs.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Cvs.java 2001/12/16 12:05:56 1.1
+++ Cvs.java 2001/12/17 09:13:57 1.2
@@ -7,336 +7,263 @@
*/
package org.apache.antlib.cvslib;
-import java.io.BufferedOutputStream;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
+import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.taskdefs.LogOutputStream;
-import org.apache.tools.ant.taskdefs.PumpStreamHandler;
-import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.Environment;
/**
- * @author costin@dnt.ro
- * @author stefano@apache.org
- * @author Wolfgang Werner <a href="mailto:wwerner@picturesafe.de">
- * wwerner@picturesafe.de</a>
+ *
+ * @author <a href="mailto:peter@apache.org">Peter Donald</a>
+ * @author <a href="mailto:costin@dnt.ro">costin@dnt.ro</a>
+ * @author <a href="mailto:stefano@apache.org">stefano@apache.org</a>
+ * @author <a href="mailto:wwerner@picturesafe.de">Wolfgang Werner [wwerner@picturesafe.de]</a>
+ * @version $Revision: 1.2 $ $Date: 2001/12/17 09:13:57 $
*/
-
-public class Cvs extends Task
+public class Cvs
+ extends AbstractTask
{
-
- private Commandline cmd = new Commandline();
-
/**
* the CVS command to execute.
*/
- private String command = "checkout";
+ private String m_command = "checkout";
/**
* suppress information messages.
*/
- private boolean quiet = false;
+ private boolean m_quiet;
/**
* report only, don't change any files.
*/
- private boolean noexec = false;
+ private boolean m_noexec;
/**
* CVS port
*/
- private int port = 0;
+ private int m_port;
/**
* CVS password file
*/
- private File passFile = null;
+ private File m_passwordFile;
/**
* If true it will stop the build if cvs exits with error. Default is false.
* (Iulian)
*/
- private boolean failOnError = false;
+ private boolean m_failOnError;
/**
* the CVSROOT variable.
*/
- private String cvsRoot;
+ private String m_cvsRoot;
/**
* the CVS_RSH variable.
*/
- private String cvsRsh;
+ private String m_cvsRsh;
/**
* the directory where the checked out files should be placed.
*/
- private File dest;
+ private File m_dest;
/**
- * the file to direct standard error from the command.
+ * the module to check out.
*/
- private File error;
+ private String m_module;
/**
- * the file to direct standard output from the command.
+ * the date at which to extract files from repository
*/
- private File output;
+ private String m_date;
/**
- * the package/module to check out.
+ * the tag with which to extract files from the repository
*/
- private String pack;
+ private String m_tag;
- public void setCommand( String c )
+ public void setCommand( final String command )
{
- this.command = c;
+ m_command = command;
}
- public void setCvsRoot( String root )
+ public void setCvsRoot( final String cvsRoot )
{
// Check if not real cvsroot => set it to null
- if( root != null )
- {
- if( root.trim().equals( "" ) )
- root = null;
- }
-
- this.cvsRoot = root;
+ m_cvsRoot = getNonEmptyString( cvsRoot );
}
- public void setCvsRsh( String rsh )
+ public void setCvsRsh( final String cvsRsh )
{
// Check if not real cvsrsh => set it to null
- if( rsh != null )
- {
- if( rsh.trim().equals( "" ) )
- rsh = null;
- }
-
- this.cvsRsh = rsh;
- }
-
- public void setDate( String p )
- {
- if( p != null && p.trim().length() > 0 )
- {
- cmd.createArgument().setValue( "-D" );
- cmd.createArgument().setValue( p );
- }
+ m_cvsRsh = getNonEmptyString( cvsRsh );
}
- public void setDest( File dest )
+ public void setDate( final String date )
{
- this.dest = dest;
+ m_date = getNonEmptyString( date );
}
- public void setError( File error )
+ public void setDest( final File dest )
{
- this.error = error;
+ m_dest = dest;
}
- public void setFailOnError( boolean failOnError )
- {
- this.failOnError = failOnError;
- }
-
public void setNoexec( boolean ne )
{
- noexec = ne;
+ m_noexec = ne;
}
- public void setOutput( File output )
+ public void setModule( final String module )
{
- this.output = output;
+ m_module = module;
}
- public void setPackage( String p )
+ public void setPassfile( final File passwordFile )
{
- this.pack = p;
+ m_passwordFile = passwordFile;
}
- public void setPassfile( File passFile )
+ public void setPort( final int port )
{
- this.passFile = passFile;
+ m_port = port;
}
- public void setPort( int port )
+ public void setQuiet( final boolean quiet )
{
- this.port = port;
+ m_quiet = quiet;
}
- public void setQuiet( boolean q )
+ public void setTag( final String tag )
{
- quiet = q;
+ m_tag = getNonEmptyString( tag );
}
- public void setTag( String p )
- {
- // Check if not real tag => set it to null
- if( p != null && p.trim().length() > 0 )
- {
- cmd.createArgument().setValue( "-r" );
- cmd.createArgument().setValue( p );
- }
- }
-
public void execute()
throws TaskException
{
- // XXX: we should use JCVS (www.ice.com/JCVS) instead of command line
- // execution so that we don't rely on having native CVS stuff around (SM)
-
- // We can't do it ourselves as jCVS is GPLed, a third party task
- // outside of jakarta repositories would be possible though (SB).
+ final Commandline command = buildCommandline();
+ final Environment env = buildEnvironment();
- Commandline toExecute = new Commandline();
+ //FIXME:
+ ExecuteStreamHandler streamhandler =
+ new LogStreamHandler( null, Project.MSG_INFO, Project.MSG_WARN );
+
+ final Execute exe = new Execute( streamhandler, null );
+ if( m_dest == null ) m_dest = getBaseDirectory();
+ exe.setWorkingDirectory( m_dest );
- toExecute.setExecutable( "cvs" );
- if( cvsRoot != null )
- {
- toExecute.createArgument().setValue( "-d" );
- toExecute.createArgument().setValue( cvsRoot );
- }
- if( noexec )
- {
- toExecute.createArgument().setValue( "-n" );
- }
- if( quiet )
+ exe.setCommandline( command.getCommandline() );
+ exe.setEnvironment( env.getVariables() );
+ try
{
- toExecute.createArgument().setValue( "-q" );
+ final int retCode = exe.execute();
+ if( retCode != 0 )
+ {
+ //replace with an ExecuteException(message,code);
+ throw new TaskException( "cvs exited with error code " + retCode );
+ }
}
- toExecute.createArgument().setLine( command );
- toExecute.addArguments( cmd.getCommandline() );
-
- if( pack != null )
+ catch( IOException e )
{
- toExecute.createArgument().setLine( pack );
+ throw new TaskException( e.toString(), e );
}
-
- Environment env = new Environment();
+ }
- if( port > 0 )
+ private Environment buildEnvironment()
+ {
+ final Environment env = new Environment();
+ if( 0 < m_port )
{
- Environment.Variable var = new Environment.Variable();
+ final Environment.Variable var = new Environment.Variable();
var.setKey( "CVS_CLIENT_PORT" );
- var.setValue( String.valueOf( port ) );
+ var.setValue( String.valueOf( m_port ) );
env.addVariable( var );
}
- if( passFile != null )
+ if( null != m_passwordFile )
{
- Environment.Variable var = new Environment.Variable();
+ final Environment.Variable var = new Environment.Variable();
var.setKey( "CVS_PASSFILE" );
- var.setValue( String.valueOf( passFile ) );
+ var.setValue( String.valueOf( m_passwordFile ) );
env.addVariable( var );
}
- if( cvsRsh != null )
+ if( null != m_cvsRsh )
{
- Environment.Variable var = new Environment.Variable();
+ final Environment.Variable var = new Environment.Variable();
var.setKey( "CVS_RSH" );
- var.setValue( String.valueOf( cvsRsh ) );
+ var.setValue( String.valueOf( m_cvsRsh ) );
env.addVariable( var );
}
+ return env;
+ }
- ExecuteStreamHandler streamhandler = null;
- OutputStream outputstream = null;
- OutputStream errorstream = null;
- if( error == null && output == null )
+ private Commandline buildCommandline() throws TaskException
+ {
+ final Commandline command = new Commandline();
+
+ command.setExecutable( "cvs" );
+ if( m_cvsRoot != null )
{
- streamhandler = new LogStreamHandler( this, Project.MSG_INFO,
- Project.MSG_WARN );
+ command.createArgument().setValue( "-d" );
+ command.createArgument().setValue( m_cvsRoot );
}
- else
+
+ if( m_noexec )
{
- if( output != null )
- {
- try
- {
- outputstream = new PrintStream( new BufferedOutputStream( new FileOutputStream( output ) ) );
- }
- catch( IOException e )
- {
- throw new TaskException( e.toString(), e );
- }
- }
- else
- {
- outputstream = new LogOutputStream( this, Project.MSG_INFO );
- }
- if( error != null )
- {
- try
- {
- errorstream = new PrintStream( new BufferedOutputStream( new FileOutputStream( error ) ) );
- }
- catch( IOException e )
- {
- throw new TaskException( e.toString(), e );
- }
- }
- else
- {
- errorstream = new LogOutputStream( this, Project.MSG_WARN );
- }
- streamhandler = new PumpStreamHandler( outputstream, errorstream );
+ command.createArgument().setValue( "-n" );
}
- Execute exe = new Execute( streamhandler,
- null );
+ if( m_quiet )
+ {
+ command.createArgument().setValue( "-q" );
+ }
- exe.setAntRun( project );
- if( dest == null ) dest = getBaseDirectory();
- exe.setWorkingDirectory( dest );
+ command.createArgument().setLine( m_command );
- exe.setCommandline( toExecute.getCommandline() );
- exe.setEnvironment( env.getVariables() );
- try
+ if( null != m_date )
{
- int retCode = exe.execute();
- /*
- * Throw an exception if cvs exited with error. (Iulian)
- */
- if( failOnError && retCode != 0 )
- throw new TaskException( "cvs exited with error code " + retCode );
+ command.createArgument().setValue( "-D" );
+ command.createArgument().setValue( m_date );
}
- catch( IOException e )
+
+ if( null != m_tag )
{
- throw new TaskException( e.toString(), e );
+ command.createArgument().setValue( "-r" );
+ command.createArgument().setValue( m_tag );
}
- finally
+
+ if( m_module != null )
{
- if( output != null )
- {
- try
- {
- outputstream.close();
- }
- catch( IOException e )
- {
- }
- }
- if( error != null )
- {
- try
- {
- errorstream.close();
- }
- catch( IOException e )
- {
- }
- }
+ command.createArgument().setLine( m_module );
}
+ return command;
+ }
+
+ private String getNonEmptyString( final String value )
+ {
+ if( isEmpty( value ) )
+ {
+ return null;
+ }
+ else
+ {
+ return value;
+ }
+ }
+
+ private boolean isEmpty( final String value )
+ {
+ return ( null == value ) || ( 0 == value.trim().length() );
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>