blob: ca8a77824f0244790c1fe1c87145d03bebbf8f6d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/* ____ ____ ____ ____ ______ *\
** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
** /_____/\____/\___/\____/____/ **
\* */
// $Id$
package meta;
import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.PrintStream;
import java.io.IOException;
import meta.util.AbstractMain;
import meta.util.AbstractFileExpander;
import meta.util.TextExpander;
import meta.util.TextWriter;
/** A program that invokes all file generators. */
public class GenerateAll extends AbstractMain {
//########################################################################
// Public Constants
public static final AbstractFileExpander[] expanders = {
new meta.scalac.ast.MetaTreeFactory(),
new meta.scalac.ast.MetaDefaultTreeFactory(),
};
//########################################################################
// Public Functions
public static void usage(PrintStream out) {
out.println("usage: " + script() + " <outputdir> [<logfile>]");
}
public static void main(String[] args) throws Exception {
if (args.length < 1 || 2 < args.length) {
usage(System.err);
throw abort();
}
int errors = 0;
File root = new File(args[0]);
PrintWriter filelist = args.length <= 1 ? null :
new PrintWriter(new BufferedWriter(new FileWriter(args[1])));
for (int i = 0; i < expanders.length; i++) {
File source = expanders[i].getSourceFile(root);
File target = expanders[i].getTargetFile(root);
System.out.println("Generating file " + target);
if (filelist != null) {filelist.println(target);filelist.flush();}
try {
TextWriter writer = expanders[i].getTextWriter();
TextExpander expander = new TextExpander(writer, expanders[i]);
expander.expandText(source);
errors += expander.getErrorCount();
FileWriter output = new FileWriter(target);
output.write(writer.toString());
output.close();
} catch (IOException exception) {
throw abort(exception);
}
}
if (errors > 0) throw abort();
}
//########################################################################
}
|