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 6ee91a83b3ffa3cd59605afcc73cb9e7c473aac1..4c84a86b16458cf3f94eb25806a528452a8ec1af 100644 --- a/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java +++ b/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java @@ -8,6 +8,9 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskAction; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; @@ -165,7 +168,7 @@ public class RelastTest extends DefaultTask { private String[] genSuffixes = {".ast", ".jadd", "RefResolver.jadd", "ResolverStubs.jrag", "Serializer.jadd"}; @TaskAction - void runTest() { + void runTest() throws IOException { setGroup("verification"); setDescription("Runs a relast test"); Project project = getProject(); @@ -188,6 +191,9 @@ public class RelastTest extends DefaultTask { deleteSpec.delete(Paths.get(getOutputDir(), getPackageName())); } }); + // create output directories, if not existing + createDirectory(Paths.get(getOutputDir())); + createDirectory(Paths.get(getGrammarName()).getParent()); if (isVerbose()) { System.out.println("Pre processing, running relast"); } @@ -261,4 +267,13 @@ public class RelastTest extends DefaultTask { } } + private void createDirectory(Path path) throws IOException { + try { + Files.createDirectories(path); + } catch (IOException e) { + System.err.println("Could not create output directory " + path); + throw e; + } + } + }