From 7191cd3ebd4c31d7fbbf60d964506496e348a9e7 Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Mon, 21 Mar 2022 18:48:20 +0100
Subject: [PATCH] Using packaged relast and preprocessor

---
 gradle.properties        |  1 +
 grammar2uml/build.gradle | 89 ++++++++++++++++++++++++++--------------
 settings.gradle          |  2 -
 3 files changed, 60 insertions(+), 32 deletions(-)
 create mode 100644 gradle.properties

diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..795bca0
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1 @@
+preprocessor_version = 0.1.0-41
diff --git a/grammar2uml/build.gradle b/grammar2uml/build.gradle
index c7a40d5..1c54c91 100644
--- a/grammar2uml/build.gradle
+++ b/grammar2uml/build.gradle
@@ -11,20 +11,28 @@ plugins {
     id 'com.github.ben-manes.versions'
     id 'java'
     id 'idea'
+    id 'org.jastadd'
     id 'application'
     id 'java-library'
     id 'maven-publish'
 }
 
-apply plugin: 'jastadd'
-
 // --- Dependencies ---
 repositories {
     mavenCentral()
+    maven {
+        name 'gitlab-maven'
+        url 'https://git-st.inf.tu-dresden.de/api/v4/groups/jastadd/-/packages/maven'
+    }
+}
+
+configurations {
+    relast
 }
 
 dependencies {
-    api project(':relast.preprocessor')
+    relast group: 'org.jastadd', name: 'relast', version: "0.3.0-137"
+    implementation group: 'org.jastadd', name: 'relast-preprocessor', version: "${preprocessor_version}"
 
     implementation group: 'net.sourceforge.plantuml', name: 'plantuml', version: '1.2022.2'
 
@@ -38,13 +46,35 @@ dependencies {
 }
 
 // --- Preprocessors ---
+ext {
+    extractLocation = "src/gen/jastadd-sources/relast.preprocessor"
+}
 File genSrc = file("src/gen/java")
 sourceSets.main.java.srcDir genSrc
 idea.module.generatedSourceDirs += genSrc
 
+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("${extractLocation}")
+}
+
 task relast(type: JavaExec) {
     group = 'Build'
-    main = "-jar"
+    classpath = configurations.relast
+    mainClass = 'org.jastadd.relast.compiler.Compiler'
+
+    dependsOn extractJastAddSources
 
     doFirst {
         delete "src/gen/jastadd/*"
@@ -53,8 +83,8 @@ task relast(type: JavaExec) {
 
     args = [
             "../libs/relast.jar",
-            '../relast.preprocessor/src/main/jastadd/RelAst.relast',
-            '../relast.preprocessor/src/main/jastadd/mustache/Mustache.relast',
+            "${extractLocation}/RelAst.relast",
+            "${extractLocation}/mustache/Mustache.relast",
             './src/main/jastadd/Grammar2Uml.relast',
             './src/main/jastadd/MustacheNodes.relast',
             "--listClass=java.util.ArrayList",
@@ -74,35 +104,35 @@ jastadd {
         module("Grammar2Uml") {
 
             jastadd {
-                basedir ".."
-                include "relast.preprocessor/src/main/jastadd/**/*.jadd"
-                include "relast.preprocessor/src/main/jastadd/**/*.jrag"
-                include "grammar2uml/src/main/jastadd/**/*.jadd"
-                include "grammar2uml/src/main/jastadd/**/*.jrag"
-                include "grammar2uml/src/gen/jastadd/**/*.ast"
-                include "grammar2uml/src/gen/jastadd/**/*.jadd"
-                include "grammar2uml/src/gen/jastadd/**/*.jrag"
+                basedir "."
+                include "src/gen/jastadd-sources/relast.preprocessor/**/*.jadd"
+                include "src/gen/jastadd-sources/relast.preprocessor/**/*.jrag"
+                include "src/main/jastadd/**/*.jadd"
+                include "src/main/jastadd/**/*.jrag"
+                include "src/gen/jastadd/**/*.ast"
+                include "src/gen/jastadd/**/*.jadd"
+                include "src/gen/jastadd/**/*.jrag"
             }
 
             scanner {
-                basedir ".."
-                include "grammar2uml/src/main/jastadd/scanner/Header.flex",               [-5]
-                include "relast.preprocessor/src/main/jastadd/scanner/Preamble.flex",      [-4]
-                include "relast.preprocessor/src/main/jastadd/scanner/Macros.flex",        [-3]
-                include "grammar2uml/src/main/jastadd/scanner/Macros.flex",               [-3]
-                include "relast.preprocessor/src/main/jastadd/scanner/RulesPreamble.flex", [-2]
-                include "grammar2uml/src/main/jastadd/scanner/MappingContent.flex",       [-1]
-                include "grammar2uml/src/main/jastadd/scanner/Keywords.flex"
-                include "relast.preprocessor/src/main/jastadd/scanner/Keywords.flex"
-                include "relast.preprocessor/src/main/jastadd/scanner/Symbols.flex",        [1]
-                include "relast.preprocessor/src/main/jastadd/scanner/RulesPostamble.flex", [2]
+                basedir "."
+                include "src/main/jastadd/scanner/Header.flex",               [-5]
+                include "src/gen/jastadd-sources/relast.preprocessor/scanner/Preamble.flex",      [-4]
+                include "src/gen/jastadd-sources/relast.preprocessor/scanner/Macros.flex",        [-3]
+                include "src/main/jastadd/scanner/Macros.flex",               [-3]
+                include "src/gen/jastadd-sources/relast.preprocessor/scanner/RulesPreamble.flex", [-2]
+                include "src/main/jastadd/scanner/MappingContent.flex",       [-1]
+                include "src/main/jastadd/scanner/Keywords.flex"
+                include "src/gen/jastadd-sources/relast.preprocessor/scanner/Keywords.flex"
+                include "src/gen/jastadd-sources/relast.preprocessor/scanner/Symbols.flex",        [1]
+                include "src/gen/jastadd-sources/relast.preprocessor/scanner/RulesPostamble.flex", [2]
             }
 
             parser {
-                basedir ".."
-                include "grammar2uml/src/main/jastadd/parser/Preamble.parser"
-                include "relast.preprocessor/src/main/jastadd/parser/RelAst.parser"
-                include "grammar2uml/src/main/jastadd/parser/Grammar2Uml.parser"
+                basedir "."
+                include "src/main/jastadd/parser/Preamble.parser"
+                include "src/gen/jastadd-sources/relast.preprocessor/parser/RelAst.parser"
+                include "src/main/jastadd/parser/Grammar2Uml.parser"
             }
         }
     }
@@ -219,5 +249,4 @@ publishing {
 
 // --- Task order ---
 generateAst.dependsOn relast
-jar.dependsOn ":relast.preprocessor:jar"
 publish.dependsOn jar
diff --git a/settings.gradle b/settings.gradle
index 00cc0ba..9ede92f 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -5,6 +5,4 @@ pluginManagement {
 }
 
 rootProject.name = 'grammar2uml'
-
-include 'relast.preprocessor'
 include 'grammar2uml'
-- 
GitLab