diff --git a/.gitmodules b/.gitmodules index dfd5681b75f6183d860a874e3e3205613e8c925e..fd02da4a7d8ee075ead5252101b19badf6e2d905 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "relast.preprocessor"] path = relast.preprocessor url = ../relast-preprocessor.git - branch = master + branch = develop diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9c0a43b9c4b44f43deffdffa0ef2186542b364ef --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Grammar2uml + +For documentation, please see <https://jastadd.pages.st.inf.tu-dresden.de/grammar2uml/> diff --git a/build.gradle b/build.gradle index 75be59becf474138cededdb8bc4617030741edac..fd845cb07d5e9fa96127753b0a0a67195926b07c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,3 @@ plugins { - id 'com.github.ben-manes.versions' + id 'com.github.ben-manes.versions' version '0.42.0' } diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore deleted file mode 100644 index 9f2a078806e1b8600d753f53ee7437b168a1b55b..0000000000000000000000000000000000000000 --- a/buildSrc/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -build/ -.gradle/ diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle deleted file mode 100644 index 95bfe53999d61b768da82463f837ec9f5254e997..0000000000000000000000000000000000000000 --- a/buildSrc/build.gradle +++ /dev/null @@ -1,11 +0,0 @@ -plugins { - id 'groovy-gradle-plugin' -} - -repositories { - gradlePluginPortal() -} - -dependencies { - implementation 'com.github.ben-manes:gradle-versions-plugin:0.36.0' -} diff --git a/buildSrc/src/main/groovy/grammar2uml.java-application-conventions.gradle b/buildSrc/src/main/groovy/grammar2uml.java-application-conventions.gradle deleted file mode 100644 index c13a9fca788d2a399f1f5458bd24bb372ab5b96d..0000000000000000000000000000000000000000 --- a/buildSrc/src/main/groovy/grammar2uml.java-application-conventions.gradle +++ /dev/null @@ -1,4 +0,0 @@ -plugins { - id 'grammar2uml.java-common-conventions' - id 'application' -} diff --git a/buildSrc/src/main/groovy/grammar2uml.java-common-conventions.gradle b/buildSrc/src/main/groovy/grammar2uml.java-common-conventions.gradle deleted file mode 100644 index 644c9bd4588c608573019e72d799a760d75a88dc..0000000000000000000000000000000000000000 --- a/buildSrc/src/main/groovy/grammar2uml.java-common-conventions.gradle +++ /dev/null @@ -1,19 +0,0 @@ -plugins { - id 'java' - id 'idea' - id 'com.github.ben-manes.versions' -} - -repositories { - mavenCentral() -} - -dependencies { - testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: "${jupiter_version}" - testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.18.1' - testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "${jupiter_version}" -} - -tasks.named('test') { - useJUnitPlatform() -} diff --git a/buildSrc/src/main/groovy/grammar2uml.java-jastadd-conventions.gradle b/buildSrc/src/main/groovy/grammar2uml.java-jastadd-conventions.gradle deleted file mode 100644 index 57d085788c40a351e76ca575d9f6b982e2da6d12..0000000000000000000000000000000000000000 --- a/buildSrc/src/main/groovy/grammar2uml.java-jastadd-conventions.gradle +++ /dev/null @@ -1,12 +0,0 @@ -plugins { - id 'grammar2uml.java-common-conventions' - id 'java-library' -} - -dependencies { - api group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11' -} - -File genSrc = file("src/gen/java") -sourceSets.main.java.srcDir genSrc -idea.module.generatedSourceDirs += genSrc diff --git a/buildSrc/src/main/groovy/grammar2uml.java-publishing-conventions.gradle b/buildSrc/src/main/groovy/grammar2uml.java-publishing-conventions.gradle deleted file mode 100644 index fea621616010ba05fb4e307cd81f163955970823..0000000000000000000000000000000000000000 --- a/buildSrc/src/main/groovy/grammar2uml.java-publishing-conventions.gradle +++ /dev/null @@ -1,88 +0,0 @@ -plugins { - id 'java' - id 'idea' - id 'com.github.ben-manes.versions' - id 'maven-publish' -} - -repositories { - mavenCentral() -} - -dependencies { - testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: "${jupiter_version}" - testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.18.1' - testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "${jupiter_version}" -} - -jar { - from { - configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } - } -} - -def versionFile = "src/main/resources/${project.getName()}Version.properties" -def oldProps = new Properties() - -try { - file(versionFile).withInputStream { stream -> oldProps.load(stream) } - version = oldProps['version'] -} catch (e) { - // this happens, if either the properties file is not present, or cannot be read from - throw new GradleException("File ${versionFile} not found or unreadable. Aborting.", e) -} - -task printVersion() { - doLast { - println(version) - } -} - -task newVersion() { - doFirst { - def props = new Properties() - props['version'] = value - props.store(file(versionFile).newWriter(), null) - } -} - -task setDevVersionForCI() { - doFirst { - def props = new Properties() - props['version'] = version + "-$System.env.CI_PIPELINE_IID" - props.store(file(versionFile).newWriter(), null) - } -} - -//1158 -publishing { - publications { - maven(MavenPublication) { - groupId = 'de.tudresden.inf.st' -// from components.java - artifact("build/libs/${project.getName()}-${project.getVersion()}.jar") { - extension 'jar' - } - } - } - repositories { - maven { - url "https://git-st.inf.tu-dresden.de/api/v4/projects/$System.env.CI_PROJECT_ID/packages/maven" - // Uncomment the following lines to publish manually (and comment out the other credentials section) -// credentials(HttpHeaderCredentials) { -// name = "Private-Token" -// value = gitLabPrivateToken // the variable resides in ~/.gradle/gradle.properties -// } - credentials(HttpHeaderCredentials) { - name = 'Job-Token' - value = System.getenv("CI_JOB_TOKEN") - } - authentication { - header(HttpHeaderAuthentication) - } - } - - } -} - -publish.dependsOn jar diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 0b9ca1a9e095602aa642d4f103b301728a005d3c..0000000000000000000000000000000000000000 --- a/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -log4j_version = 2.13.3 -jupiter_version = 5.7.0 -mustache_java_version = 0.9.7 diff --git a/grammar2uml/build.gradle b/grammar2uml/build.gradle index fc69ae6b1526a625f10515ca8e32a0a90f5f0340..05bd313f63ee8d8632d8d8f065620616fb095f36 100644 --- a/grammar2uml/build.gradle +++ b/grammar2uml/build.gradle @@ -1,58 +1,61 @@ +// --- Buildscripts (must be at the top) --- buildscript { - repositories.mavenLocal() repositories.mavenCentral() dependencies { classpath group: 'org.jastadd', name: 'jastaddgradle', version: '1.13.3' } } +// --- Plugin definitions --- plugins { - id 'grammar2uml.java-jastadd-conventions' - id 'grammar2uml.java-application-conventions' - id 'grammar2uml.java-publishing-conventions' + id 'com.github.ben-manes.versions' + id 'java' + id 'idea' + id 'application' + id 'java-library' + id 'maven-publish' } apply plugin: 'jastadd' -application.mainClassName = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler' +// --- Dependencies --- +repositories { + mavenCentral() +} jar { - manifest { - attributes "Main-Class": application.mainClassName - } + manifest.attributes "Main-Class": "${mainClassName}" } dependencies { implementation project(':relast.preprocessor') - implementation fileTree(include: ['plantuml.jar'], dir: '../libs') - implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: "${mustache_java_version}" - runtime group: 'org.jastadd', name: 'jastadd', version: '2.3.4' + implementation group: 'net.sourceforge.plantuml', name: 'plantuml', version: '1.2022.2' + + api group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11' + + implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: '0.9.10' + // runtime group: 'org.jastadd', name: 'jastadd', version: '2.3.4' + + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.8.2' + testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.8.2' } -File preprocessorGrammar = file('../relast.preprocessor/src/main/jastadd/RelAst.relast') -File mustacheGrammar = file('../relast.preprocessor/src/main/jastadd/mustache/Mustache.relast') -File grammar2umlGrammar = file('./src/main/jastadd/Grammar2Uml.relast') -File intermediateGrammar = file('./src/main/jastadd/MustacheNodes.relast') +// --- Preprocessors --- +File genSrc = file("src/gen/java") +sourceSets.main.java.srcDir genSrc +idea.module.generatedSourceDirs += genSrc task relast(type: JavaExec) { group = 'Build' main = "-jar" - doFirst { - delete "src/gen/jastadd/*.ast" - delete "src/gen/jastadd/Grammar2Uml.jadd" - delete "src/gen/jastadd/Grammar2UmlRefResolver.jadd" - delete "src/gen/jastadd/Grammar2UmlResolverStubs.jrag" - mkdir "src/gen/jastadd/" - } - args = [ "../libs/relast.jar", - preprocessorGrammar, - mustacheGrammar, - grammar2umlGrammar, - intermediateGrammar, + '../relast.preprocessor/src/main/jastadd/RelAst.relast', + '../relast.preprocessor/src/main/jastadd/mustache/Mustache.relast', + './src/main/jastadd/Grammar2Uml.relast', + './src/main/jastadd/MustacheNodes.relast', "--listClass=java.util.ArrayList", "--jastAddList=JastAddList", "--useJastAddNames", @@ -60,18 +63,9 @@ task relast(type: JavaExec) { "--resolverHelper", "--grammarName=./src/gen/jastadd/Grammar2Uml" ] - - inputs.files(file("../libs/relast.jar"), - preprocessorGrammar, - mustacheGrammar, - grammar2umlGrammar, - intermediateGrammar) - outputs.files(file("./src/gen/jastadd/Grammar2Uml.ast"), - file("./src/gen/jastadd/Grammar2Uml.jadd"), - file("./src/gen/jastadd/Grammar2UmlRefResolver.jadd"), - file('./src/gen/jastadd/Grammar2UmlResolverStubs.jrag')) } +// --- JastAdd --- jastadd { configureModuleBuild() modules { @@ -136,8 +130,88 @@ jastadd { scanner.genDir = "src/gen/java/de/tudresden/inf/st/jastadd/grammar2uml/scanner" parser.genDir = "src/gen/java/de/tudresden/inf/st/jastadd/grammar2uml/parser" - jastaddOptions = ["--lineColumnNumbers", "--List=JastAddList", "--safeLazy", "--visitCheck=true", "--rewrite=cnta", "--cache=all"] + // defalt options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false' + extraJastAddOptions = ["--lineColumnNumbers", "--List=JastAddList", "--visitCheck=true"] +} + +// --- Tests --- +test.useJUnitPlatform() + +// --- Versioning and Publishing --- +ext { + mainClassName = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler' +} + +application.mainClassName = "${mainClassName}" + +task fatJar(type: Jar) { + dependsOn jar + group = "build" + archiveAppendix = "fatjar" + from { + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } + manifest { + attributes "Main-Class": "${mainClassName}" + } +} + +def versionFile = 'src/main/resources/grammar2umlVersion.properties' + +try { + def oldProps = new Properties() + file(versionFile).withInputStream { stream -> oldProps.load(stream) } + version = oldProps['version'] +} catch (ignored) { + // this happens, if either the properties file is not present, or cannot be read from + throw new GradleException("File ${versionFile} not found or unreadable. Aborting.") +} + +task newVersion() { + doFirst { + def props = new Properties() + props['version'] = value + props.store(file(versionFile).newWriter(), null) + } +} + +task printVersion() { + doLast { + println(version) + } +} + +task setDevVersionForCI() { + doFirst { + def props = new Properties() + props['version'] = version + "-$System.env.CI_PIPELINE_IID" + props.store(file(versionFile).newWriter(), null) + } +} + +group = 'de.tudresden.inf.st' + +publishing { + publications { + maven(MavenPublication) { + from components.java + } + } + repositories { + maven { + url "https://git-st.inf.tu-dresden.de/api/v4/projects/708/packages/maven" + credentials(HttpHeaderCredentials) { + name = 'Job-Token' + value = System.getenv("CI_JOB_TOKEN") + } + authentication { + header(HttpHeaderAuthentication) + } + } + + } } +// --- Task order --- generateAst.dependsOn relast jar.dependsOn ":relast.preprocessor:jar" diff --git a/grammar2uml/src/main/jastadd/Navigation.jrag b/grammar2uml/src/main/jastadd/Navigation.jrag index ccd0f3d49ede4fbecfafafff05b5228e42c76ed9..f519c0a9ed661e6089113711487ef273c29728cd 100644 --- a/grammar2uml/src/main/jastadd/Navigation.jrag +++ b/grammar2uml/src/main/jastadd/Navigation.jrag @@ -14,8 +14,5 @@ aspect Navigation { eq MGrammar2Uml.getChild().containedFile() = null; // --- containedFileName --- - eq Grammar2Uml.getChild().containedFileName() = getFileName(); - eq Program.getChild().containedFileName() = null; - eq Grammar.getChild().containedFileName() = null; - eq MGrammar2Uml.getChild().containedFileName() = null; + eq Grammar2Uml.containedFileName() = getFileName(); } diff --git a/grammar2uml/src/main/resources/grammar2umlVersion.properties b/grammar2uml/src/main/resources/grammar2umlVersion.properties index 0dab828ca2b57a871cb4f88cffafcae01b30c1aa..4d7122ec31b88850b7548ffc80c0957a2789b127 100644 --- a/grammar2uml/src/main/resources/grammar2umlVersion.properties +++ b/grammar2uml/src/main/resources/grammar2umlVersion.properties @@ -1,2 +1,2 @@ -#Thu Feb 24 16:54:04 CET 2022 -version=0.2.1 +#Mon Mar 21 13:09:36 CET 2022 +version=0.2.2 diff --git a/libs/plantuml.jar b/libs/plantuml.jar deleted file mode 100644 index f3a204fc9cb7297951950e05c34f4bd270c5ebb6..0000000000000000000000000000000000000000 Binary files a/libs/plantuml.jar and /dev/null differ diff --git a/relast.preprocessor b/relast.preprocessor index 7959fd58f90538a7d8751855a61f69ba775bc82c..cee30f5c8a1b356118f5ed78302a1df64fe76897 160000 --- a/relast.preprocessor +++ b/relast.preprocessor @@ -1 +1 @@ -Subproject commit 7959fd58f90538a7d8751855a61f69ba775bc82c +Subproject commit cee30f5c8a1b356118f5ed78302a1df64fe76897