aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
diff options
context:
space:
mode:
authorThibault Gagnaux <tgagnaux@gmail.com>2021-11-24 10:27:00 +0100
committerThibault Gagnaux <tgagnaux@gmail.com>2021-11-24 10:27:00 +0100
commit1f13c769f57d4670cee462b6cf741efb5f5a8cd6 (patch)
tree8f701a527ec89459f400fffd3dba8632da29fc8d /src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
parent4f287790c285a1503bc05d75e1561de122f9a79e (diff)
downloadfrege-gradle-plugin-1f13c769f57d4670cee462b6cf741efb5f5a8cd6.tar.gz
frege-gradle-plugin-1f13c769f57d4670cee462b6cf741efb5f5a8cd6.tar.bz2
frege-gradle-plugin-1f13c769f57d4670cee462b6cf741efb5f5a8cd6.zip
feat: adds `replFrege` taskf-repl-task
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java')
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
new file mode 100644
index 0000000..9ee14df
--- /dev/null
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
@@ -0,0 +1,54 @@
+package ch.fhnw.thga.gradleplugins;
+
+import javax.inject.Inject;
+
+import org.gradle.api.DefaultTask;
+import org.gradle.api.file.DirectoryProperty;
+import org.gradle.api.file.FileCollection;
+import org.gradle.api.file.RegularFileProperty;
+import org.gradle.api.logging.Logger;
+import org.gradle.api.logging.Logging;
+import org.gradle.api.model.ObjectFactory;
+import org.gradle.api.provider.Property;
+import org.gradle.api.provider.Provider;
+import org.gradle.api.tasks.Input;
+import org.gradle.api.tasks.InputDirectory;
+import org.gradle.api.tasks.InputFile;
+import org.gradle.api.tasks.Internal;
+import org.gradle.api.tasks.JavaExec;
+import org.gradle.api.tasks.TaskAction;
+
+public abstract class ReplFregeTask extends DefaultTask {
+ public static final Logger LOGGER = Logging.getLogger(SetupFregeTask.class);
+ public static final String REPL_MAIN_CLASS = "frege.repl.FregeRepl";
+
+ private final JavaExec javaExec;
+
+ @InputFile
+ public abstract RegularFileProperty getFregeCompilerJar();
+
+ @InputDirectory
+ public abstract DirectoryProperty getFregeOutputDir();
+
+ @Input
+ public abstract Property<String> getFregeDependencies();
+
+ @Internal
+ public final Provider<FileCollection> getClasspath() {
+ return getFregeDependencies().map(depsClasspath -> {
+ return depsClasspath.isEmpty() ? getProject().files(getFregeCompilerJar(), getFregeOutputDir())
+ : getProject().files(getFregeCompilerJar(), getFregeOutputDir(), depsClasspath);
+ });
+ }
+
+ @Inject
+ public ReplFregeTask(ObjectFactory objectFactory) {
+ javaExec = objectFactory.newInstance(JavaExec.class);
+ }
+
+ @TaskAction
+ public void startFregeRepl() {
+ javaExec.getMainClass().set(REPL_MAIN_CLASS);
+ javaExec.setClasspath(getClasspath().get()).exec();
+ }
+}