You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ni...@apache.org on 2004/05/23 07:50:48 UTC
svn commit: rev 20235 - in avalon/trunk/tools/magic: . engine/src/java/org/apache/merlin/magic
Author: niclas
Date: Sat May 22 22:50:48 2004
New Revision: 20235
Removed:
avalon/trunk/tools/magic/build.bsh
Modified:
avalon/trunk/tools/magic/build.sequence
avalon/trunk/tools/magic/engine/src/java/org/apache/merlin/magic/Builder.java
avalon/trunk/tools/magic/engine/src/java/org/apache/merlin/magic/Main.java
Log:
Added build.sequence support in the engine. First argument the directory, followed by a space/comma separated list of methods to invoke, or no methods for 'sequencing' in that directory. Sequencing is started from command-line with 'magic' without parameters.
Modified: avalon/trunk/tools/magic/build.sequence
==============================================================================
--- avalon/trunk/tools/magic/build.sequence (original)
+++ avalon/trunk/tools/magic/build.sequence Sat May 22 22:50:48 2004
@@ -1,6 +1,7 @@
-prepare
-xdoc
-artifact
-java
-jar
+prepare plugin.install
+xdoc plugin.install
+clean plugin.install
+artifact plugin.install
+java plugin.install
+jar plugin.install
Modified: avalon/trunk/tools/magic/engine/src/java/org/apache/merlin/magic/Builder.java
==============================================================================
--- avalon/trunk/tools/magic/engine/src/java/org/apache/merlin/magic/Builder.java (original)
+++ avalon/trunk/tools/magic/engine/src/java/org/apache/merlin/magic/Builder.java Sat May 22 22:50:48 2004
@@ -84,7 +84,10 @@
// plugin method
pluginname = methodname.substring( 0, pos );
plugin = sm.lookupPlugin( pluginname );
- methodname = methodname.substring( pos + 1 );
+ if( pos + 1 >= methodname.length() )
+ methodname = pluginname;
+ else
+ methodname = methodname.substring( pos + 1 );
}
if( plugin != null )
{
Modified: avalon/trunk/tools/magic/engine/src/java/org/apache/merlin/magic/Main.java
==============================================================================
--- avalon/trunk/tools/magic/engine/src/java/org/apache/merlin/magic/Main.java (original)
+++ avalon/trunk/tools/magic/engine/src/java/org/apache/merlin/magic/Main.java Sat May 22 22:50:48 2004
@@ -1,6 +1,12 @@
package org.apache.merlin.magic;
+import java.io.BufferedReader;
import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+import java.util.ArrayList;
+import java.util.StringTokenizer;
public class Main
{
@@ -12,19 +18,95 @@
long t0 = System.currentTimeMillis();
try
{
- m_Application = new Builder( args, getProjectDir() );
- m_Application.execute();
+ File projectDir = getProjectDir();
+ process( args, projectDir );
} finally
{
long t1 = System.currentTimeMillis();
System.out.println( "Build Time: " + (t1 - t0) + " ms." );
}
}
-
+
static private File getProjectDir()
{
String cwd = System.getProperty( "user.dir" );
File f = new File( cwd );
return f.getAbsoluteFile();
+ }
+
+ static private void process( String[] args, File dir )
+ throws Exception
+ {
+ if( args.length == 0 )
+ {
+ String[] jobs = sequence( dir );
+ for( int i = 0 ; i < jobs.length ; i++ )
+ {
+ doJob( jobs[i], dir );
+ }
+ }
+ else
+ {
+ m_Application = new Builder( args, dir );
+ m_Application.execute();
+ }
+ }
+
+ static String[] sequence( File projDir )
+ throws Exception
+ {
+ File sequenceFile = new File( projDir, "build.sequence" );
+ if( ! sequenceFile.exists() )
+ return new String[0];
+ FileReader reader = null;
+ BufferedReader br = null;
+
+ ArrayList result = new ArrayList();
+ try
+ {
+ reader = new FileReader( sequenceFile );
+ br = new BufferedReader( reader );
+ String line;
+ while( (line = br.readLine() ) != null )
+ {
+ result.add( line.trim() );
+ }
+ String[] retVal = new String[ result.size() ];
+ result.toArray( retVal );
+ return retVal;
+ } finally
+ {
+ if( reader != null )
+ reader.close();
+ if( br != null )
+ br.close();
+ }
+ }
+
+ static private void doJob( String descriptor, File dir )
+ throws Exception
+ {
+ // Check for empty line.
+ if( "".equals( descriptor ) )
+ return;
+
+ StringTokenizer st = new StringTokenizer( descriptor, " ,", true );
+
+ String subdir = st.nextToken();
+ ArrayList methods = new ArrayList();
+
+ while( st.hasMoreTokens() )
+ {
+ String method = st.nextToken().trim();
+ if( ! "".equals( method ) )
+ methods.add( method );
+ }
+ String[] result = new String[ methods.size() ];
+ methods.toArray( result );
+
+ // recurse the methods into main() having user.dir set to the
+ // requested dir.
+ File newProjectDir = new File( dir, subdir );
+ process( result, newProjectDir );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org