Commit 543f9c59 authored by René Schöne's avatar René Schöne Committed by Johannes Mey
Browse files

Resolve "Create script to include commit in version string"

parent d01f774d
......@@ -110,6 +110,47 @@ jastadd {
jastaddOptions = ["--lineColumnNumbers", "--safeLazy", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
}
def versionFile = 'src/main/resources/RelASTVersion.properties'
task updateVersion {
/* version string handling adapted from https://bitbucket.org/extendj/extendj/src/master/build.gradle
written by Jesper Öqvist <jesper.oqvist@cs.lth.se> */
group 'build'
description 'Updates the version file for RelAST'
doLast {
def oldProps = new Properties()
String oldFullVersion, fullVersion
try {
file(versionFile).withInputStream { stream -> oldProps.load(stream) }
oldFullVersion = oldProps['version']
} catch (ignored) {
oldFullVersion = "???"
}
try {
def proc = 'git describe'.execute(null, rootDir)
if (proc.waitFor() == 0) {
fullVersion = proc.text.trim()
if (hasProperty('withNewVersion')) {
// Trim to get latest tag:
version = (fullVersion =~ /-\d+\-g.+$/).replaceAll('')
}
if (oldFullVersion != fullVersion) {
def props = new Properties()
props['version'] = fullVersion
props.store(file(versionFile).newWriter(), null)
}
} else {
logger.warn('No git tags found.')
}
} catch (IOException e) {
logger.warn("Failded to run git describe (${e.getMessage()}).")
}
}
}
processResources.dependsOn updateVersion
task preprocessRelationTest(type: JavaExec, group: 'verification') {
doFirst {
......
......@@ -8,14 +8,11 @@ import org.jastadd.relast.parser.RelAstParser;
import org.jastadd.relast.scanner.RelAstScanner;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.*;
import java.util.List;
public class Compiler {
private static final String VERSION = "0.2.4";
private ArrayList<Option<?>> options;
private FlagOption optionWriteToFile;
private FlagOption optionPrintAST;
......@@ -35,7 +32,7 @@ public class Compiler {
commandLine = new CommandLine(options);
commandLine.parse(args);
printMessage("Running RelAST " + VERSION);
printMessage("Running RelAST " + readVersion());
if (commandLine.getArguments().size() < 1) {
error("specify at least one input file");
......@@ -126,6 +123,26 @@ public class Compiler {
}
}
/**
* Reads the version string.
*
* The version string is read from the property file
* src/main/resources/Version.properties. This
* file should be generated during the build process. If it is missing
* then there is some problem in the build script.
*
* @author Jesper Öqvist <jesper.oqvist@cs.lth.se>
* @return the read version string, or <code>version ?</code>
*/
private String readVersion() {
try {
ResourceBundle resources = ResourceBundle.getBundle("Version");
return resources.getString("version");
} catch (MissingResourceException e) {
return "version ?";
}
}
public static void main(String[] args) {
try {
new Compiler(args);
......
RelASTVersion.properties
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment