Skip to content
Snippets Groups Projects
Commit 5661e7c6 authored by René Schöne's avatar René Schöne
Browse files

Fix jar build, allow multiple grammars, allow typedecls fail to resolve.

parent f58aef9d
No related branches found
No related tags found
No related merge requests found
Pipeline #7381 passed
......@@ -46,6 +46,18 @@ task newVersion() {
}
}
jar {
manifest {
attributes "Main-Class": mainClassName
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
archiveBaseName = 'relast2uml'
}
sourceSets {
main {
java.srcDir "src/gen/java"
......
aspect NameResolution {
aspect NameResolutionExtended {
refine NameResolution eq Program.resolveTypeDecl(String name) {
try {
return refined(name);
} catch (RuntimeException e) {
System.err.println(e.getMessage());
TypeDecl dummy = new TypeDecl();
dummy.setName("(" + name + ")");
return dummy;
}
}
}
......@@ -78,7 +78,7 @@ public class Compiler {
System.out.println("No output output file is set. Assuming '" + output + "'.");
}
try {
Files.createDirectories(Paths.get(output).getParent());
Files.createDirectories(Paths.get(output).toAbsolutePath().getParent());
} catch (IOException e) {
throw new CompilerException("Error creating output dir " + Paths.get(output).getParent().toAbsolutePath(), e);
}
......@@ -86,6 +86,9 @@ public class Compiler {
if (anyRequiredOptionIsUnset()) {
throw new CompilerException("Aborting due to missing values for required options.");
}
if (commandLine.getArguments().isEmpty()) {
throw new CompilerException("No input grammars specified!");
}
Relast2Uml relast2uml = parseProgram();
......@@ -158,11 +161,16 @@ public class Compiler {
}
private void addOptions() {
optionOutputFile = addOption(new StringOption("output", "target file to be generated."));
optionInputRelast2Uml = addOption(new StringOption("inputRelast2Uml", "relast2uml definition file."));
optionHelp = addOption(new FlagOption("help", "Print usage and exit."));
optionVersion = addOption(new FlagOption("help", "Print version and exit."));
optionVerbose = addOption(new FlagOption("verbose", "Print more messages while compiling."));
optionOutputFile = addOption(new StringOption(
"output", "target file to be generated.", "uml.md").makeOptional());
optionInputRelast2Uml = addOption(new StringOption(
"inputRelast2Uml", "relast2uml definition file.").makeOptional());
optionHelp = addOption(new FlagOption(
"help", "Print usage and exit."));
optionVersion = addOption(new FlagOption(
"help", "Print version and exit."));
optionVerbose = addOption(new FlagOption(
"verbose", "Print more messages while compiling."));
}
private <OptionType extends Option<?>> OptionType addOption(OptionType option) {
......@@ -175,6 +183,7 @@ public class Compiler {
Relast2Uml relast2Uml;
for (String inputGrammarFileName : commandLine.getArguments()) {
printMessage("Parsing " + inputGrammarFileName);
GrammarFile inputGrammar;
try (BufferedReader reader = Files.newBufferedReader(Paths.get(inputGrammarFileName))) {
Relast2UmlScanner scanner = new Relast2UmlScanner(reader);
......
package org.jastadd.relast2uml.compiler.options;
public class StringOption extends Option<String> {
private HasArgument hasArgument;
private String value;
private boolean isSet;
......@@ -12,6 +13,12 @@ public class StringOption extends Option<String> {
super(name, description);
value = defaultValue;
isSet = false;
hasArgument = HasArgument.YES;
}
public StringOption makeOptional() {
hasArgument = HasArgument.OPTIONAL;
return this;
}
@Override
......@@ -21,7 +28,7 @@ public class StringOption extends Option<String> {
@Override
public Option.HasArgument hasArgument() {
return Option.HasArgument.YES;
return hasArgument;
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment