diff --git a/build.gradle b/build.gradle index 78228deb83ea2c2acc14174e6a61f64f129d167f..3e8eb6674186b6586ab3a8b0bca7c95c0a229939 100644 --- a/build.gradle +++ b/build.gradle @@ -14,11 +14,20 @@ application.mainClassName = "${mainClassName}" repositories { mavenCentral() + maven { + name 'gitlab-maven' + url 'https://git-st.inf.tu-dresden.de/api/v4/groups/jastadd/-/packages/maven' + } +} + +configurations { + relast } dependencies { - implementation project(':relast.preprocessor') - testImplementation testFixtures(project(":relast.preprocessor")) + relast group: 'org.jastadd', name: 'relast', version: "${relast_version}" + implementation group: 'org.jastadd', name: 'relast-preprocessor', version: "${preprocessor_version}" + testImplementation testFixtures(group: 'org.jastadd', name: 'relast-preprocessor', version: "${preprocessor_version}") } project.version = "0.2.0" @@ -35,20 +44,37 @@ test { maxHeapSize = '1G' } +task extractJastAddSources(type: Sync) { + + dependsOn configurations.runtimeClasspath + configurations.runtimeClasspath.asFileTree.filter { it.toString().endsWith("relast-preprocessor-${preprocessor_version}.jar") }.collect { + from(zipTree(it)) { + include "**/*.jrag" + include "**/*.jadd" + include "**/*.ast" + include "**/*.relast" + include "**/*.flex" + include "**/*.parser" + } + } + includeEmptyDirs false + into file("${project.buildDir}/tmp/jastadd-sources") +} + jar { manifest { attributes "Main-Class": "${mainClassName}" } from { - configurations.runtimeClasspath.collect { return (it.exists() && (!it.toString().contains("/build/libs/")|| it.toString().contains("-base-"))) ? (it.isDirectory() ? it : zipTree(it)) : null } + configurations.runtimeClasspath.collect {it.isDirectory() ? it : zipTree(it) } } } // Input and output files for relast def relastInputFiles = [ - "relast.preprocessor/src/main/jastadd/RelAst.relast", - "relast.preprocessor/src/main/jastadd/mustache/Mustache.relast" + "${project.buildDir}/tmp/jastadd-sources/RelAst.relast", + "${project.buildDir}/tmp/jastadd-sources/mustache/Mustache.relast" ] def relastOutputFiles = [ "src/gen/jastadd/RelAst.ast", @@ -59,8 +85,11 @@ def relastOutputFiles = [ task relast(type: JavaExec) { - classpath = files("relast.preprocessor/libs/relast.jar") group = 'Build' + classpath = configurations.relast + mainClass = 'org.jastadd.relast.compiler.Compiler' + + dependsOn extractJastAddSources doFirst { delete relastOutputFiles @@ -88,9 +117,9 @@ jastadd { jastadd { basedir "." - include "relast.preprocessor/src/main/jastadd/**/*.ast" - include "relast.preprocessor/src/main/jastadd/**/*.jadd" - include "relast.preprocessor/src/main/jastadd/**/*.jrag" + include "build/tmp/jastadd-sources/**/*.ast" + include "build/tmp/jastadd-sources/**/*.jadd" + include "build/tmp/jastadd-sources/**/*.jrag" include "src/main/jastadd/**/*.ast" include "src/main/jastadd/**/*.jadd" include "src/main/jastadd/**/*.jrag" @@ -100,18 +129,18 @@ jastadd { } scanner { - include "relast.preprocessor/src/main/jastadd/scanner/Header.flex", [-4] - include "relast.preprocessor/src/main/jastadd/scanner/Preamble.flex", [-3] - include "relast.preprocessor/src/main/jastadd/scanner/Macros.flex", [-2] - include "relast.preprocessor/src/main/jastadd/scanner/RulesPreamble.flex", [-1] - include "relast.preprocessor/src/main/jastadd/scanner/Keywords.flex", [ 0] - include "relast.preprocessor/src/main/jastadd/scanner/Symbols.flex", [ 1] - include "relast.preprocessor/src/main/jastadd/scanner/RulesPostamble.flex", [ 2] + include "build/tmp/jastadd-sources/scanner/Header.flex", [-4] + include "build/tmp/jastadd-sources/scanner/Preamble.flex", [-3] + include "build/tmp/jastadd-sources/scanner/Macros.flex", [-2] + include "build/tmp/jastadd-sources/scanner/RulesPreamble.flex", [-1] + include "build/tmp/jastadd-sources/scanner/Keywords.flex", [ 0] + include "build/tmp/jastadd-sources/scanner/Symbols.flex", [ 1] + include "build/tmp/jastadd-sources/scanner/RulesPostamble.flex", [ 2] } parser { - include "relast.preprocessor/src/main/jastadd/parser/Preamble.parser" - include "relast.preprocessor/src/main/jastadd/parser/RelAst.parser" + include "build/tmp/jastadd-sources/parser/Preamble.parser" + include "build/tmp/jastadd-sources/parser/RelAst.parser" } } } @@ -142,5 +171,4 @@ jastadd { } clean.dependsOn(cleanGen) -generateAst.dependsOn(relast) -jar.dependsOn("relast.preprocessor:jar") // the jar is a fat jar that contains the jar of the preprocessor +generateAst.dependsOn(relast, extractJastAddSources) diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000000000000000000000000000000000000..47cf02494925ad66bdfcd8d4d74ab2e1f5de6fc2 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +relast_version = 0.3.0-137 +preprocessor_version = 0.1.0-41 \ No newline at end of file diff --git a/src/test/resources/RelAstPreprocessor/config.yaml b/src/test/resources/RelAstPreprocessor/config.yaml index 0122f6c7a6cfb15f71004cc97bf1a413d6b55b2f..87455fb34c67de257f17c68970a281ba98aa5095 100644 --- a/src/test/resources/RelAstPreprocessor/config.yaml +++ b/src/test/resources/RelAstPreprocessor/config.yaml @@ -1,7 +1,7 @@ - name: "RelAST Preprocessor Grammar from submodule (null)" - in: "../../../../relast.preprocessor/src/main/jastadd/" + in: "../../../../build/tmp/jastadd-sources/" args: - - "--inputBaseDir=../../../../relast.preprocessor/src/main/jastadd/" + - "--inputBaseDir=../../../../build/tmp/jastadd-sources/" - "--outputBaseDir=out" - "--errorHandling=null" - "RelAst.relast"