#! /usr/bin/env groovy class build { final ant = new AntBuilder ( ) final buildFileName = 'build.groovy' def doTarget ( target ) { ( new File ( '.' ) ).eachDir { directory -> if ( ( new File ( directory.name + File.separator + buildFileName ) ).canRead ( ) ) { def process = Runtime.getRuntime ( ).exec ( 'groovy ' + buildFileName + ' ' + target , null , directory ) process.in.eachLine { println it } } } } def clean ( ) { doTarget ( 'clean' ) ant.delete ( quiet : 'true' ) { ant.fileset ( dir : '.' , includes : '**/*~' , defaultexcludes : 'no' ) } } static main ( args ) { def builder = new build ( ) if ( ( args.length == 0 ) || ( args[0] == 'clean' ) ) { builder.clean ( ) } else { args.each { target -> builder.doTarget ( target ) } } } }