diff options
author | Thibault Gagnaux <tgagnaux@gmail.com> | 2021-12-20 20:48:17 +0100 |
---|---|---|
committer | Thibault Gagnaux <tgagnaux@gmail.com> | 2021-12-21 11:22:55 +0100 |
commit | 992490f446720cd4cf4fb9aadff463b2328a8287 (patch) | |
tree | e3a19d9c3f79a6ba9620f05da2db8ba5421df9ff /src/test | |
parent | f923b4f8733003d55891dd4da25d849c81c4933c (diff) | |
download | frege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.tar.gz frege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.tar.bz2 frege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.zip |
feat: adds `replSource` property and command-line option
The `replSource` property specifies the frege source file that you want to
load into the repl. It is excluded in the `fregeCompile` task so that
we don't get two java class files (one from `compileFrege` and one
from the fregeRepl `:l` command) that shadow each other on the classpath.
As a result, we can make interactive changes to the `replSource` file and
use the `:r` reload command to see them.
Diffstat (limited to 'src/test')
3 files changed, 49 insertions, 10 deletions
diff --git a/src/test/java/ch/fhnw/thga/gradleplugins/Builder.java b/src/test/java/ch/fhnw/thga/gradleplugins/Builder.java index 9293e44..d379013 100644 --- a/src/test/java/ch/fhnw/thga/gradleplugins/Builder.java +++ b/src/test/java/ch/fhnw/thga/gradleplugins/Builder.java @@ -15,5 +15,7 @@ public interface Builder { Builder compilerFlags(String compilerFlags); + Builder replModule(String replModule); + FregeDTO build(); } diff --git a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java index a09bd27..bea1e81 100644 --- a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java +++ b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java @@ -14,9 +14,17 @@ public class FregeDTO { public final String outputDir; public final String mainModule; public final String compilerFlags; - - public FregeDTO(String version, String release, String compilerDownloadDir, String mainSourceDir, - String outputDir, String mainModule, String compilerFlags) { + public final String replModule; + + public FregeDTO( + String version, + String release, + String compilerDownloadDir, + String mainSourceDir, + String outputDir, + String mainModule, + String compilerFlags, + String replModule) { this.version = version; this.release = release; this.compilerDownloadDir = compilerDownloadDir; @@ -24,6 +32,7 @@ public class FregeDTO { this.outputDir = outputDir; this.mainModule = mainModule; this.compilerFlags = compilerFlags; + this.replModule = replModule; } public String getVersion() { @@ -54,6 +63,10 @@ public class FregeDTO { return compilerFlags; } + public String getReplModule() { + return replModule; + } + private String getFieldValue(Field field) { try { return field.get(this).toString(); @@ -67,7 +80,9 @@ public class FregeDTO { return FregeDTO.class.getField(fieldName); } catch (NoSuchFieldException e) { throw new RuntimeException( - String.format("Field %s not found in class %s", e.getMessage(), FregeDTO.class.getName()), + String.format( + "Field %s not found in class %s", + e.getMessage(), FregeDTO.class.getName()), e.getCause()); } } @@ -81,7 +96,8 @@ public class FregeDTO { } private boolean isGetterProperty(Method method) { - return method.getName().startsWith("get") && method.getReturnType().getName().contains("Property"); + return method.getName().startsWith("get") && + method.getReturnType().getName().contains("Property"); } private String stripGetPrefixAndDecapitalize(String s) { @@ -89,9 +105,14 @@ public class FregeDTO { } public String toBuildFile() { - Stream<Method> methods = Arrays.stream(FregeExtension.class.getMethods()); - Stream<Field> fields = methods.filter(m -> isGetterProperty(m)) - .map(m -> stripGetPrefixAndDecapitalize(m.getName())).map(name -> getField(name)); - return fields.filter(f -> !isEmpty(f)).map(f -> toKeyValuePairs(f)).collect(Collectors.joining("\n ")); + Stream<Field> fields = + Arrays.stream(FregeExtension.class.getMethods()) + .filter(m -> isGetterProperty(m)) + .map(m -> stripGetPrefixAndDecapitalize(m.getName())) + .map(name -> getField(name)); + return fields + .filter(f -> !isEmpty(f)) + .map(f -> toKeyValuePairs(f)) + .collect(Collectors.joining("\n ")); } } diff --git a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java index 910114e..d3a6c52 100644 --- a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java +++ b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java @@ -8,6 +8,7 @@ public final class FregeDTOBuilder implements Builder { private String outputDir = ""; private String mainModule = ""; private String compilerFlags = ""; + private String replModule = ""; private static volatile FregeDTOBuilder instance; @@ -72,7 +73,22 @@ public final class FregeDTOBuilder implements Builder { return this; } + @Override + public Builder replModule(String replModule) + { + this.replModule = replModule; + return this; + } + public FregeDTO build() { - return new FregeDTO(version, release, compilerDownloadDir, mainSourceDir, outputDir, mainModule, compilerFlags); + return new FregeDTO( + version, + release, + compilerDownloadDir, + mainSourceDir, + outputDir, + mainModule, + compilerFlags, + replModule); } } |