donaldp 02/01/05 17:58:11 Modified: proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/unix Rpm.java Log: Refactor and clean code Also start using Execute2 abstraction Revision Changes Path 1.6 +57 -139 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/unix/Rpm.java Index: Rpm.java =================================================================== RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/unix/Rpm.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Rpm.java 30 Dec 2001 10:46:59 -0000 1.5 +++ Rpm.java 6 Jan 2002 01:58:11 -0000 1.6 @@ -7,220 +7,138 @@ */ package org.apache.tools.ant.taskdefs.unix; -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.Task; -import org.apache.tools.ant.taskdefs.exec.Execute; -import org.apache.tools.ant.taskdefs.exec.LogOutputStream; +import org.apache.tools.ant.taskdefs.exec.Execute2; import org.apache.tools.ant.types.Commandline; /** * @author [EMAIL PROTECTED] */ -public class Rpm extends Task +public class Rpm + extends AbstractTask { - /** * the rpm command to use */ - private String command = "-bb"; + private String m_command = "-bb"; /** * clean BUILD directory */ - private boolean cleanBuildDir = false; + private boolean m_cleanBuildDir; /** * remove spec file */ - private boolean removeSpec = false; + private boolean m_removeSpec; /** * remove sources */ - private boolean removeSource = false; - - /** - * the file to direct standard error from the command - */ - private File error; - - /** - * the file to direct standard output from the command - */ - private File output; + private boolean m_removeSource; /** * the spec file */ - private String specFile; + private String m_specFile; /** * the rpm top dir */ - private File topDir; - - public void setCleanBuildDir( boolean cbd ) - { - cleanBuildDir = cbd; - } - - public void setCommand( String c ) - { - this.command = c; - } + private File m_topDir; - public void setError( File error ) + public void setCleanBuildDir( boolean cleanBuildDir ) { - this.error = error; + m_cleanBuildDir = cleanBuildDir; } - public void setOutput( File output ) + public void setCommand( final String command ) { - this.output = output; + m_command = command; } - public void setRemoveSource( boolean rs ) + public void setRemoveSource( final boolean removeSource ) { - removeSource = rs; + m_removeSource = removeSource; } - public void setRemoveSpec( boolean rs ) + public void setRemoveSpec( final boolean removeSpec ) { - removeSpec = rs; + m_removeSpec = removeSpec; } - public void setSpecFile( String sf ) + public void setSpecFile( final String specFile ) throws TaskException { - if( ( sf == null ) || ( sf.trim().equals( "" ) ) ) + if( ( specFile == null ) || ( specFile.trim().equals( "" ) ) ) { throw new TaskException( "You must specify a spec file" ); } - this.specFile = sf; + m_specFile = specFile; } - public void setTopDir( File td ) + public void setTopDir( final File topDir ) { - this.topDir = td; + m_topDir = topDir; } public void execute() throws TaskException { + final Commandline cmd = createCommand(); + final Execute2 exe = new Execute2(); + setupLogger( exe ); - Commandline toExecute = new Commandline(); + if( m_topDir == null ) m_topDir = getBaseDirectory(); + exe.setWorkingDirectory( m_topDir ); - toExecute.setExecutable( "rpm" ); - if( topDir != null ) + exe.setCommandline( cmd.getCommandline() ); + try { - toExecute.createArgument().setValue( "--define" ); - toExecute.createArgument().setValue( "_topdir" + topDir ); - } + final String message = "Building the RPM based on the " + m_specFile + " file"; + getLogger().info( message ); - toExecute.createArgument().setLine( command ); - - if( cleanBuildDir ) - { - toExecute.createArgument().setValue( "--clean" ); - } - if( removeSpec ) - { - toExecute.createArgument().setValue( "--rmspec" ); + if( 0 != exe.execute() ) + { + throw new TaskException( "Failed to execute rpm" ); + } } - if( removeSource ) + catch( IOException e ) { - toExecute.createArgument().setValue( "--rmsource" ); + throw new TaskException( "Error", e ); } + } - toExecute.createArgument().setValue( "SPECS/" + specFile ); - - OutputStream outputstream = null; - OutputStream errorstream = null; - - if( error == null && output == null ) + private Commandline createCommand() + throws TaskException + { + final Commandline cmd = new Commandline(); + cmd.setExecutable( "rpm" ); + if( m_topDir != null ) { - outputstream = new LogOutputStream( getLogger(), false ); - errorstream = new LogOutputStream( getLogger(), true ); + cmd.createArgument().setValue( "--define" ); + cmd.createArgument().setValue( "_topdir" + m_topDir ); } - else - { - if( output != null ) - { - try - { - outputstream = new PrintStream( new BufferedOutputStream( new FileOutputStream( output ) ) ); - } - catch( IOException e ) - { - throw new TaskException( "Error", e ); - } - } - else - { - outputstream = new LogOutputStream( getLogger(), false ); - } - if( error != null ) - { - try - { - errorstream = new PrintStream( new BufferedOutputStream( new FileOutputStream( error ) ) ); - } - catch( IOException e ) - { - throw new TaskException( "Error", e ); - } - } - else - { - errorstream = new LogOutputStream( getLogger(), true ); - } - } - - Execute exe = new Execute(); - exe.setOutput( outputstream ); - exe.setError( errorstream ); - if( topDir == null ) topDir = getBaseDirectory(); - exe.setWorkingDirectory( topDir ); + cmd.createArgument().setLine( m_command ); - exe.setCommandline( toExecute.getCommandline() ); - try + if( m_cleanBuildDir ) { - exe.execute(); - getLogger().info( "Building the RPM based on the " + specFile + " file" ); + cmd.createArgument().setValue( "--clean" ); } - catch( IOException e ) + if( m_removeSpec ) { - throw new TaskException( "Error", e ); + cmd.createArgument().setValue( "--rmspec" ); } - finally + if( m_removeSource ) { - if( output != null ) - { - try - { - outputstream.close(); - } - catch( IOException e ) - { - } - } - if( error != null ) - { - try - { - errorstream.close(); - } - catch( IOException e ) - { - } - } + cmd.createArgument().setValue( "--rmsource" ); } + + cmd.createArgument().setValue( "SPECS/" + m_specFile ); + return cmd; } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>