/* sbt -- Simple Build Tool * Copyright 2009, 2010 Mark Harrah */ package xsbt.api import java.io.File /** Generates a datatype hierarchy from a definition file.*/ object GenerateDatatypes { /** Arguments: ('mutable' | 'immutable') +*/ def main(args: Array[String]) { if(args.length < 4) { System.err.println("Invalid number of arguments, expected 'mutable' or 'immutable', package, base directory, and files to process") System.exit(1) } else { val immutable = args(0).trim.toLowerCase == "immutable" val packageName = args(1).trim require(!packageName.isEmpty) val baseDirectory = new File(args(2)) baseDirectory.mkdirs val files = args.drop(3).map(new File(_)) // parse the files, getting all interface and enums val parser = new DatatypeParser val definitions = files.flatMap(parser.parseFile) // create the interfaces, enums, and class implementations val generator = if(immutable) new ImmutableGenerator(packageName, baseDirectory) else new MutableGenerator(packageName, baseDirectory) generator.writeDefinitions(definitions) } } }