diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5a4afe8f3713d4d4d5957fe1e5a6417e267644c0..a07891d846bc3319746c23f076b04de227f9ff58 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -32,8 +32,10 @@ publish: image: openjdk:11 stage: publish script: + - "./gradlew setDevVersionForCI" - "./gradlew publishPluginMavenPublicationToMavenRepository" only: + - dev - master pages: diff --git a/build.gradle b/build.gradle index f57b22c698089bfbc29ed3fb43c989e530fa0d72..1ccfb713b7450908c5ec7c6954a0301b90420629 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,6 @@ plugins { } group 'org.jastadd.preprocessor' -version '0.2.12' mainClassName = 'org.jastadd.preprocessor.testing.doc.DocumentationCreator' gradlePlugin { @@ -17,6 +16,39 @@ gradlePlugin { } } +def versionFile = 'src/main/resources/PreprocessorTesting.properties' +def oldProps = new Properties() + +try { + 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) + } +} + //830 publishing { publications { @@ -28,7 +60,7 @@ publishing { } repositories { maven { - url "https://git-st.inf.tu-dresden.de/api/v4/projects/830/packages/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" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4d9ca1649142b0c20144adce78e2472e2da01c30..41dfb87909a877d96c3af4adccce4c7a301b55a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 83f2acfdc319a24e8766cca78f32474ad7a22dd6..4f906e0c811fc9e230eb44819f509cd0627f2600 100755 --- a/gradlew +++ b/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -129,6 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -154,19 +156,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -175,14 +177,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 9618d8d9607cd91a0efb866bcac4810064ba6fac..107acd32c4e687021ef32db511e8a206129b88ec 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -51,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -61,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/java/org/jastadd/preprocessor/testing/plugin/JastAddConfiguration.java b/src/main/java/org/jastadd/preprocessor/testing/plugin/JastAddConfiguration.java index 37419009a277a22190602f5dc796ca585b7031a1..ae3d27c7c493514dc439210399c3b29f63eee152 100644 --- a/src/main/java/org/jastadd/preprocessor/testing/plugin/JastAddConfiguration.java +++ b/src/main/java/org/jastadd/preprocessor/testing/plugin/JastAddConfiguration.java @@ -1,9 +1,6 @@ package org.jastadd.preprocessor.testing.plugin; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.Optional; -import org.gradle.api.tasks.OutputDirectory; +import org.gradle.api.tasks.*; import org.jastadd.preprocessor.testing.doc.Description; import java.io.File; @@ -32,14 +29,14 @@ public interface JastAddConfiguration { @Description(value = "Do not run JastAdd") @Optional @Input - boolean isSkipRun(); - void setSkipRun(boolean skipRun); + Boolean isSkipRun(); + void setSkipRun(Boolean skipRun); @Description(value = "Add more options not directly supported") - @Optional - @Input + @Internal List<String> getExtraOptions(); void setExtraOptions(List<String> extraOptions); + @Input default List<String> getExtraOptionsOrDefault() { return getExtraOptions() != null ? getExtraOptions() : Collections.emptyList(); } diff --git a/src/main/java/org/jastadd/preprocessor/testing/plugin/RagConnectConfiguration.java b/src/main/java/org/jastadd/preprocessor/testing/plugin/RagConnectConfiguration.java index e115687855ca413aef2a143a96febe309405e20f..9aa151750f1134cb94ce8c08255a1e1bb89a92af 100644 --- a/src/main/java/org/jastadd/preprocessor/testing/plugin/RagConnectConfiguration.java +++ b/src/main/java/org/jastadd/preprocessor/testing/plugin/RagConnectConfiguration.java @@ -2,6 +2,7 @@ package org.jastadd.preprocessor.testing.plugin; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFiles; +import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.Optional; import org.jastadd.preprocessor.testing.doc.Description; @@ -34,26 +35,26 @@ public interface RagConnectConfiguration { @Description(value = "Log read endpoints", correspondingParameter = "--logReads") @Optional @Input - boolean isLogReads(); - void setLogReads(boolean logReads); + Boolean isLogReads(); + void setLogReads(Boolean logReads); @Description(value = "Log write endpoints", correspondingParameter = "--logWrites") @Optional @Input - boolean isLogWrites(); - void setLogWrites(boolean logWrites); + Boolean isLogWrites(); + void setLogWrites(Boolean logWrites); @Description(value = "Log incremental activities", correspondingParameter = "--logIncremental") @Optional @Input - boolean isLogIncremental(); - void setLogIncremental(boolean loggIncremental); + Boolean isLogIncremental(); + void setLogIncremental(Boolean logIncremental); @Description(value = "Be more verbose during compilation", correspondingParameter = "--verbose") @Optional @Input - boolean isVerbose(); - void setVerbose(boolean verbose); + Boolean isVerbose(); + void setVerbose(Boolean verbose); @Description(value = "Set protocols to be used", correspondingParameter = "--protocols") @Optional @@ -62,10 +63,10 @@ public interface RagConnectConfiguration { void setProtocols(List<String> protocols); @Description(value = "Add more options not directly supported") - @Optional - @Input + @Internal List<String> getExtraOptions(); void setExtraOptions(List<String> extraOptions); + @Input default List<String> getExtraOptionsOrDefault() { return getExtraOptions() != null ? getExtraOptions() : Collections.emptyList(); } diff --git a/src/main/java/org/jastadd/preprocessor/testing/plugin/RagConnectTest.java b/src/main/java/org/jastadd/preprocessor/testing/plugin/RagConnectTest.java index 351bf9b939c8bec4892c91e16cd4e2e3f146fdf7..d3fc464c17893121c87a0999892b7805b39d08e8 100644 --- a/src/main/java/org/jastadd/preprocessor/testing/plugin/RagConnectTest.java +++ b/src/main/java/org/jastadd/preprocessor/testing/plugin/RagConnectTest.java @@ -38,7 +38,7 @@ public abstract class RagConnectTest extends RelastTest { } @OutputFiles - public List<File> grammarFilesGeneratedByRagconnect() { + public List<File> getGrammarFilesGeneratedByRagconnect() { // files are RagConnect.relast and <INPUT_GRAMMAR(s)>.relast List<File> result = new ArrayList<>(); result.add(resolveOutputDir("RagConnect.relast")); @@ -52,7 +52,7 @@ public abstract class RagConnectTest extends RelastTest { } @OutputFiles - public List<File> aspectFilesGeneratedByRagconnect() { + public List<File> getAspectFilesGeneratedByRagconnect() { // file is only RagConnect.jadd List<File> result = new ArrayList<>(); result.add(resolveOutputDir("RagConnect.jadd")); @@ -73,8 +73,8 @@ public abstract class RagConnectTest extends RelastTest { // delete generated files project.delete(deleteSpec -> { - deleteSpec.delete(grammarFilesGeneratedByRagconnect()); - deleteSpec.delete(aspectFilesGeneratedByRagconnect()); + deleteSpec.delete(getGrammarFilesGeneratedByRagconnect()); + deleteSpec.delete(getAspectFilesGeneratedByRagconnect()); }); // run ragconnect first @@ -119,11 +119,11 @@ public abstract class RagConnectTest extends RelastTest { // now run relast + jastadd - getRelast().setInputFiles(grammarFilesGeneratedByRagconnect()); + getRelast().setInputFiles(getGrammarFilesGeneratedByRagconnect()); if (getJastadd().getInputFiles() == null) { getJastadd().setInputFiles(new ArrayList<>()); } - for (File file : aspectFilesGeneratedByRagconnect()) { + for (File file : getAspectFilesGeneratedByRagconnect()) { if (getJastadd().getInputFiles().contains(file)) { getLogger().warn("Input file to JastAdd already known: {} - Remove from jastadd.inputFiles!", file); } else { diff --git a/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastConfiguration.java b/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastConfiguration.java index c42cbc912a03e97061269db18258f3f24bb6cb92..450c32dc6b0d927c89f1fc966b4a4ae72e6df539 100644 --- a/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastConfiguration.java +++ b/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastConfiguration.java @@ -2,6 +2,7 @@ package org.jastadd.preprocessor.testing.plugin; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFiles; +import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.Optional; import org.jastadd.preprocessor.testing.doc.Description; @@ -19,8 +20,8 @@ public interface RelastConfiguration { @Description(value = "Use JastAdd like API for relations", correspondingParameter = "--useJastAddNames") @Optional @Input - boolean isUseJastAddNames(); - void setUseJastAddNames(boolean useJastAddNames); + Boolean isUseJastAddNames(); + void setUseJastAddNames(Boolean useJastAddNames); @Description(value = "Name of resulting grammar (can be a path)", correspondingParameter = "--grammarName") @Input @@ -36,14 +37,14 @@ public interface RelastConfiguration { @Description(value = "Do not write any files", correspondingParameter = "--file") @Optional @Input - boolean isNoWriteToFile(); - void setNoWriteToFile(boolean noWriteToFile); + Boolean isNoWriteToFile(); + void setNoWriteToFile(Boolean noWriteToFile); @Description(value = "Do not generate resolverHelper", correspondingParameter = "--resolverHelper") @Optional @Input - boolean isNoResolverHelper(); - void setNoResolverHelper(boolean noResolverHelper); + Boolean isNoResolverHelper(); + void setNoResolverHelper(Boolean noResolverHelper); @Description(value = "Class to be used for relations", correspondingParameter = "--listClass") @Optional @@ -52,22 +53,22 @@ public interface RelastConfiguration { void setListClass(String listClass); @Description(value = "Activate serialization, and set its implementation", correspondingParameter = "--serializer") - @Optional - @Input + @Internal String getSerializer(); void setSerializer(String serializer); @Description(value = "Be more verbose during compilation") @Optional @Input - boolean isVerbose(); - void setVerbose(boolean verbose); + Boolean isVerbose(); + void setVerbose(Boolean verbose); @Description(value = "Add more options not directly supported") @Optional @Input List<String> getExtraOptions(); void setExtraOptions(List<String> extraOptions); + @Input default List<String> getExtraOptionsOrDefault() { return getExtraOptions() != null ? getExtraOptions() : Collections.emptyList(); } diff --git a/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastTest.java b/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastTest.java index 5ae9dd4ca86aa655b8d7b328f999f7b790239fab..1969ba481149dd048d24cb4209ac7bfd1bb2888f 100644 --- a/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastTest.java +++ b/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastTest.java @@ -91,7 +91,7 @@ public abstract class RelastTest extends DefaultTask { if (getRelast().isVerbose()) { System.out.println("Pre processing, running relast"); } - // then, run relast pre processing + // then, run relast pre-processing project.getPlugins().withType(JavaPlugin.class, javaPlugin -> { SourceSetContainer sourceSets = (SourceSetContainer) project.getProperties().get("sourceSets"); FileCollection runtimeClasspath = sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME).getRuntimeClasspath(); @@ -129,7 +129,7 @@ public abstract class RelastTest extends DefaultTask { args.add("--grammarName=" + pathToAbsoluteProject(getRelast().getGrammarName())); args.addAll(getRelast().getExtraOptionsOrDefault()); if (getRelast().isVerbose()) { - System.out.println("Start relast with args: " + args + " and main: " + javaExecSpec.getMain()); + System.out.println("Start relast with args: " + args + " and main: " + javaExecSpec.getMainClass()); } javaExecSpec.args(args); }).assertNormalExitValue(); diff --git a/src/main/resources/PreprocessorTesting.properties b/src/main/resources/PreprocessorTesting.properties new file mode 100644 index 0000000000000000000000000000000000000000..9f19e4559d63e26a977725b8a8491e58deaa6e55 --- /dev/null +++ b/src/main/resources/PreprocessorTesting.properties @@ -0,0 +1,2 @@ +#Tue Mar 08 14:00:49 CET 2022 +version=0.2.13