diff --git a/build.gradle b/build.gradle index 3804964769e2d69d9b6c8ab91247a4c361df3cc0..7598b77053f4dc07782b395b3c5f91029937bcae 100644 --- a/build.gradle +++ b/build.gradle @@ -119,7 +119,7 @@ task preprocessRelationTest(type: JavaExec, group: 'verification') { classpath = sourceSets.main.runtimeClasspath main = 'org.jastadd.relast.compiler.Compiler' //noinspection GroovyAssignabilityCheck - args 'src/test/jastadd/relations/Relations.relast', '--useJastAddNames', '--file', '--grammarName=src/test/jastadd/relations/Relations' + args 'src/test/jastadd/relations/Relations.relast', '--quiet', '--useJastAddNames', '--file', '--grammarName=src/test/jastadd/relations/Relations' } task doublePreprocessRelationTest(type: JavaExec, group: 'verification') { @@ -131,7 +131,7 @@ task doublePreprocessRelationTest(type: JavaExec, group: 'verification') { classpath = sourceSets.main.runtimeClasspath main = 'org.jastadd.relast.compiler.Compiler' //noinspection GroovyAssignabilityCheck - args 'src/test/jastadd/relations/Relations.ast', '--useJastAddNames', '--file', '--grammarName=src/test/jastadd/relations/Relations2' + args 'src/test/jastadd/relations/Relations.ast', '--quiet', '--useJastAddNames', '--file', '--grammarName=src/test/jastadd/relations/Relations2' } task compileRelationTest(type: JavaExec, group: 'verification') { diff --git a/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java b/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java index dba3838d2771c688415026a6f798ab1d086db780..5098a85916ee63c0af3c5c0045a221cb0f83939c 100644 --- a/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java +++ b/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java @@ -193,6 +193,7 @@ public class RelastTest extends DefaultTask { javaExecSpec.setClasspath(runtimeClasspath); javaExecSpec.setMain("org.jastadd.relast.compiler.Compiler"); List<Object> args = new ArrayList<>(getRelastFiles()); + args.add("--quiet"); if (isWriteToFile()) { args.add("--file"); } diff --git a/src/main/java/org/jastadd/relast/compiler/Compiler.java b/src/main/java/org/jastadd/relast/compiler/Compiler.java index 0ec91633b0f04ea6415159ae74510184ab4fa97f..1a2605fc1db58827aa37302b5b318269e536beec 100644 --- a/src/main/java/org/jastadd/relast/compiler/Compiler.java +++ b/src/main/java/org/jastadd/relast/compiler/Compiler.java @@ -25,16 +25,18 @@ public class Compiler { private EnumOption optionSerializer; private FlagOption optionResolverHelper; private FlagOption optionUseJastaddNames; + private FlagOption optionQuiet; private CommandLine commandLine; public Compiler(String[] args) throws CommandLineException { - System.out.println("Running RelAST " + VERSION); options = new ArrayList<>(); addOptions(); commandLine = new CommandLine(options); commandLine.parse(args); + printMessage("Running RelAST " + VERSION); + if (commandLine.getArguments().size() < 1) { error("specify at least one input file"); } @@ -43,7 +45,7 @@ public class Compiler { Program p = parseProgram(filenames); if (optionJastAddList.isSet()) { - System.out.println("JastAdd List type is set to " + optionJastAddList.getValue()); + printMessage("JastAdd List type is set to " + optionJastAddList.getValue()); ASTNode.jastAddListType = optionJastAddList.getValue(); } @@ -68,7 +70,7 @@ public class Compiler { } else { if (optionListClass.isSet()) { - System.out.println("ListClass is set to " + optionListClass.getValue()); + printMessage("ListClass is set to " + optionListClass.getValue()); ASTNode.listClass = optionListClass.getValue(); } @@ -109,8 +111,8 @@ public class Compiler { } else if (optionPrintAST.isSet()) { System.out.println(p.dumpTree()); } else { - System.out.println(p.generateAbstractGrammar()); - System.out.println(p.generateAspect()); + printMessage(p.generateAbstractGrammar()); + printMessage(p.generateAspect()); } } } @@ -119,11 +121,17 @@ public class Compiler { try { new Compiler(args); } catch (CommandLineException e) { - System.out.println(e.getMessage()); + System.err.println(e.getMessage()); System.exit(1); } } + private void printMessage(String message) { + if (!optionQuiet.isSet()) { + System.out.println(message); + } + } + private void writeToFile(String filename, String str) { try { PrintWriter writer = new PrintWriter(filename); @@ -137,14 +145,14 @@ public class Compiler { private void addOptions() { optionWriteToFile = addOption(new FlagOption("file", "write output to files <filename>Gen.ast and <filename>Gen.jadd")); - optionPrintAST = addOption(new FlagOption("ast", "print AST")); + optionPrintAST = addOption(new FlagOption("ast", "print AST (ignores quiet option)")); optionListClass = addOption(new StringOption("listClass", "determine the class name of the nonterminal reference list")); optionGrammarName = addOption(new StringOption("grammarName", "name of the generated grammar and aspect (without file extension)")); optionResolverHelper = addOption(new FlagOption("resolverHelper", "create a subtype for each type containing a string that can be used to resolve the type later")); optionJastAddList = addOption(new StringOption("jastAddList", "set the name of the List type in JastAdd (has to match the option '--List' or its default List)")); optionUseJastaddNames = addOption(new FlagOption("useJastAddNames", "generate names in the form of addX, removeX and setX. If omitted, the default, original naming scheme resulting in addToX, removeFromX and setX will be used.")); optionSerializer = addOption(new EnumOption("serializer", "generate a (de-)serializer", Arrays.asList("jackson"), "jackson")); - + optionQuiet = addOption(new FlagOption("quiet", "do not output anything on stdout")); } private <OptionType extends Option<?>> OptionType addOption(OptionType option) {