From 56ced9b5d85e8d1a4b749c9ba66a861424a46564 Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Sat, 6 Feb 2021 17:30:48 +0000 Subject: [PATCH] Feature/versioning --- build.gradle | 34 +++++++++++++++++-- .../jastadd/PreprocessorConfiguration.java | 6 ++++ .../relast/compiler/AbstractCompiler.java | 14 +++++++- .../RelastSourceToSourceCompiler.java | 2 +- src/main/resources/preprocessor.properties | 1 + 5 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/preprocessor.properties diff --git a/build.gradle b/build.gradle index 03170b2..dfbb25f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,6 @@ plugins { id 'java-library' + id 'application' id 'org.jastadd' id 'java' id 'idea' @@ -7,11 +8,18 @@ plugins { id 'com.github.ben-manes.versions' version '0.34.0' } +ext { + mainClassName = 'org.jastadd.relast.compiler.RelastSourceToSourceCompiler' +} + +// set the main class name for `gradle run` +application.mainClassName = "${mainClassName}" + sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { - jcenter() + mavenCentral() } sourceSets { @@ -25,6 +33,7 @@ sourceSets { task modelJar(type: Jar) { group = "build" archiveBaseName = 'model' + archiveVersion = '' from sourceSets.model.output } @@ -37,7 +46,7 @@ dependencies { modelImplementation group: 'org.jastadd', name: 'jastadd', version: '2.3.4' modelImplementation group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11' - compileOnly files(modelJar.archiveFile.get()) + implementation files(modelJar.archiveFile.get()) api group: 'org.jastadd', name: 'jastadd', version: '2.3.4' api group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11' implementation group: 'com.github.jknack', name: 'handlebars', version: '4.2.0' @@ -56,6 +65,27 @@ dependencies { testFixturesApi group: 'commons-io', name: 'commons-io', version: '2.8.0' } +def versionFile = 'src/main/resources/preprocessor.properties' +def versionProps = new Properties() + +try { + file(versionFile).withInputStream { stream -> versionProps.load(stream) } + version = versionProps['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) +} + +jar { + manifest { + attributes "Main-Class": "${mainClassName}" + } + + from { + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } +} + test { useJUnitPlatform() diff --git a/src/main/java/org/jastadd/PreprocessorConfiguration.java b/src/main/java/org/jastadd/PreprocessorConfiguration.java index 726aba3..39fd439 100644 --- a/src/main/java/org/jastadd/PreprocessorConfiguration.java +++ b/src/main/java/org/jastadd/PreprocessorConfiguration.java @@ -28,6 +28,7 @@ package org.jastadd; import org.jastadd.option.ArgumentParser; +import org.jastadd.option.FlagOption; import org.jastadd.option.Option; import java.io.PrintStream; @@ -70,6 +71,11 @@ public class PreprocessorConfiguration extends org.jastadd.Configuration { if (options.containsKey(option.name())) { System.err.println("Unable to add option '" + option.name() + "', because there is a JastAdd option with the same name."); } else { + if (option.name().equals("help") && option instanceof FlagOption) { + this.helpOption = (FlagOption) option; + } else if (option.name().equals("version") && option instanceof FlagOption) { + this.versionOption = (FlagOption) option; + } argParser.addOption(option); options.put(option.name(), option); } diff --git a/src/main/java/org/jastadd/relast/compiler/AbstractCompiler.java b/src/main/java/org/jastadd/relast/compiler/AbstractCompiler.java index 7c13685..e9d55b5 100644 --- a/src/main/java/org/jastadd/relast/compiler/AbstractCompiler.java +++ b/src/main/java/org/jastadd/relast/compiler/AbstractCompiler.java @@ -5,6 +5,8 @@ import org.jastadd.option.FlagOption; import org.jastadd.option.Option; import java.util.ArrayList; +import java.util.MissingResourceException; +import java.util.ResourceBundle; public abstract class AbstractCompiler { @@ -13,7 +15,7 @@ public abstract class AbstractCompiler { protected ArrayList<Option<?>> options; private PreprocessorConfiguration configuration; - public AbstractCompiler(String name, boolean jastaddCompliant) { + protected AbstractCompiler(String name, boolean jastaddCompliant) { this.name = name; this.jastAddCompliant = jastaddCompliant; } @@ -33,6 +35,16 @@ public abstract class AbstractCompiler { return 0; } + if (configuration.shouldPrintVersion()) { + try { + ResourceBundle resources = ResourceBundle.getBundle("preprocessor"); + System.out.println(getName() + ", version " + resources.getString("version")); + } catch (MissingResourceException e) { + System.out.println(getName() + ", unknown version"); + } + return 0; + } + return compile(); } diff --git a/src/main/java/org/jastadd/relast/compiler/RelastSourceToSourceCompiler.java b/src/main/java/org/jastadd/relast/compiler/RelastSourceToSourceCompiler.java index 7c39483..696c3c1 100644 --- a/src/main/java/org/jastadd/relast/compiler/RelastSourceToSourceCompiler.java +++ b/src/main/java/org/jastadd/relast/compiler/RelastSourceToSourceCompiler.java @@ -15,7 +15,7 @@ public class RelastSourceToSourceCompiler extends RelAstProcessor { public static void main(String[] args) { try { - new RelastSourceToSourceCompiler("relast-preprocessor", true).run(args); + new RelastSourceToSourceCompiler("Relational RAGs Source-To-Source Compiler", false).run(args); } catch (CompilerException e) { System.err.println(e.getMessage()); System.exit(-1); diff --git a/src/main/resources/preprocessor.properties b/src/main/resources/preprocessor.properties new file mode 100644 index 0000000..aef125e --- /dev/null +++ b/src/main/resources/preprocessor.properties @@ -0,0 +1 @@ +version=1.0.0 -- GitLab