diff --git a/.gitignore b/.gitignore index aa0282eb2dcea439ad181e21a62ce01a7d5c80bb..13c4bbbe76eea9afc71901c7f3401d51af57e06f 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,3 @@ /src/gen-res /*.png uml.md -gradle.properties diff --git a/build.gradle b/build.gradle index b496f6f6f2cfbe5c90442dc8c77dc3eb2c1a2df6..0a3b93f22a86f1cd020ce9f653c3352e1ec8cb6a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,75 +1,60 @@ -buildscript { - repositories.jcenter() - dependencies { - classpath 'org.jastadd:jastaddgradle:1.13.3' - } -} - +// --- Plugin definitions --- plugins { id 'com.github.ben-manes.versions' version '0.36.0' id 'java' id 'idea' + id 'org.jastadd' version "${jastadd_gradle_version}" id 'application' } -apply plugin: 'jastadd' - -mainClassName = 'de.tudresden.inf.st.mrc.MinimalMain' - +// --- Dependencies --- repositories { - jcenter() + mavenCentral() maven { name "gitlab-maven" url "https://git-st.inf.tu-dresden.de/api/v4/groups/jastadd/-/packages/maven" } } -apply plugin: 'jastadd' - configurations { - baseRuntimeClasspath - ragconnectClasspath - grammar2umlClasspath + ragconnect + grammar2uml + relast } -run { - standardInput = System.in +dependencies { + grammar2uml group: 'de.tudresden.inf.st', name: 'grammar2uml', version: '0.2.4' + + relast group: 'org.jastadd', name: 'relast', version: "0.4.0-143" + ragconnect group: 'de.tudresden.inf.st', name: 'ragconnect', version: '1.0.0-alpha-214' + + implementation group: 'de.tudresden.inf.st', name: 'dumpAst', version: '1.0.4-70' + jastadd2 group: 'org.jastadd', name: 'jastadd2', version: '2.3.5-dresden' + + implementation group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.16' + implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: "${log4j_version}" + implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: "${log4j_version}" + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${jackson_version}" + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_version}" } +// --- Preprocessors --- File genSrc = file("src/gen/java") sourceSets.main.java.srcDir genSrc idea.module.generatedSourceDirs += genSrc -dependencies { -// implementation fileTree(include: ['dumpAst2uml.jar'], dir: 'libs') - implementation group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.16' - implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.14.0' - implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.14.0' - implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5' - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.12.1' - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.12.1' - implementation group: 'de.tudresden.inf.st', name: 'dumpAst', version: '0.3.5' - grammar2umlClasspath group: 'de.tudresden.inf.st', name: 'grammar2uml', version: '0.1.1' - -// ragconnectClasspath group: 'de.tudresden.inf.st', name: 'ragconnect', version: '0.2.4' - ragconnectClasspath fileTree(include: ['ragconnect-0.2.5.jar'], dir: '/data/git/jastadd-ragconnect/ragconnect.base/build/libs') -// jastadd2 "org.jastadd:jastadd:2.3.4" - jastadd2 fileTree(include: ['jastadd2.jar'], dir: '/data/git/jastadd-2/') -} - // Input files for relast def relastFiles = ["src/gen/jastadd/MinimalModel.relast", "src/gen/jastadd/RagConnect.relast"] task grammar2uml(type: JavaExec) { main = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler' - classpath = configurations.grammar2umlClasspath -// classpath = configurations.implementation + classpath = configurations.grammar2uml args([ - '--verbose', - ] - + - relastFiles) + '--inputGrammar2Uml=minimal.folder', + '--output=uml.png', + 'src/main/jastadd/MinimalModel.relast' + ]) } // phases: ragConnect -> RelAst -> JastAdd @@ -77,35 +62,36 @@ task grammar2uml(type: JavaExec) { task ragConnect(type: JavaExec) { group = 'Build' main = 'org.jastadd.ragconnect.compiler.Compiler' - classpath = configurations.ragconnectClasspath + classpath = configurations.ragconnect args([ '--o=src/gen/jastadd', 'src/main/jastadd/MinimalModel.relast', 'src/main/jastadd/MinimalModel.connect', + '--List=JastAddList', '--logReads', '--logWrites', - '--verbose', '--rootNode=Root', '--incremental=param,debug', "--tracing=cache,flush" ]) - } // phase: RelAst task relastToJastAdd(type: JavaExec) { group = 'Build' - main = "-jar" + classpath = configurations.relast + mainClass = 'org.jastadd.relast.compiler.Compiler' - args(["libs/relast.jar", + args([ "--grammarName=./src/gen/jastadd/model", "--useJastAddNames", "--listClass=java.util.ArrayList", "--jastAddList=JastAddList", "--serializer=jackson", "--resolverHelper", - "--file"] + "--file" + ] + relastFiles) @@ -113,19 +99,13 @@ task relastToJastAdd(type: JavaExec) { outputs.files file("./src/gen/jastadd/model.ast"), file("./src/gen/jastadd/model.jadd") } +// --- JastAdd --- // phase: JastAdd jastadd { configureModuleBuild() modules { //noinspection GroovyAssignabilityCheck module("minimal") { - - java { - basedir "src/" - include "main/**/*.java" - include "gen/**/*.java" - } - jastadd { basedir "src/" include "main/jastadd/**/*.ast" @@ -144,17 +124,12 @@ jastadd { } preprocessParser.doFirst { - args += ["--no-beaver-symbol"] - } module = "minimal" - astPackage = 'de.tudresden.inf.st.mrc.ast' - genDir = 'src/gen/java' - buildInfoDir = 'src/gen-res' // jastaddOptions = ["--lineColumnNumbers", "--visitCheck=true", "--rewrite=cnta", "--cache=all"] @@ -173,6 +148,11 @@ cleanGen.doFirst { delete "src/gen/jastadd" } -// Workflow configuration for phases +// --- Versioning and Publishing --- +mainClassName = 'de.tudresden.inf.st.mrc.MinimalMain' + +// --- Task order --- generateAst.dependsOn relastToJastAdd relastToJastAdd.dependsOn ragConnect + +// --- Misc --- diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000000000000000000000000000000000000..f42f592a3f2a51b0702e1ffa9b523faaf64a4d29 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,11 @@ +# suppress inspection "UnusedProperty" for whole file +systemProp.socksProxyHost=127.0.0.1 +systemProp.socksProxyPort=9999 +jackson_version = 2.13.2 +jackson_yaml_version = 2.13.2 +jupiter_version = 5.8.2 +assertj_version = 3.22.0 +log4j_version = 2.17.2 +protobuf_version = 4.0.0-rc-2 +protobuf_plugin_version = 0.8.18 +jastadd_gradle_version = 1.14.5 diff --git a/minimal.folder b/minimal.folder new file mode 100644 index 0000000000000000000000000000000000000000..1715663cc9392d3eb38102473d7825dfb41550f4 --- /dev/null +++ b/minimal.folder @@ -0,0 +1,3 @@ +folder Sender : SenderRoot, SenderSubTree +folder Receiver : ReceiverRoot, ReceiverSubTree +folder Alfa : Alfa, Echo, Foxtrot, Golf diff --git a/src/main/jastadd/MinimalModel.connect b/src/main/jastadd/MinimalModel.connect index 1015d1ee1e1343b9107ec9cf328a6425c48fac79..8bc77ebd212a5cb35fed25eda5ea3d2b692359e2 100644 --- a/src/main/jastadd/MinimalModel.connect +++ b/src/main/jastadd/MinimalModel.connect @@ -3,8 +3,8 @@ receive A.Input ; send A.OutputOnA ; send B.OutputOnB using Transformation ; send C.OutputOnC using Transformation ; -send tree A.D ; -receive tree A.Reading ; +send A.D ; +receive A.Reading ; // mapping definitions Transformation maps String s to String {: @@ -17,5 +17,5 @@ B.OutputOnB canDependOn A.Input as dependencyB ; C.OutputOnC canDependOn A.Input as dependencyC ; // --- relational case --- -send tree SenderRoot.Alfa ; -receive tree ReceiverRoot.Alfa ; +send SenderRoot.Alfa ; +receive ReceiverRoot.Alfa ;