aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
diff options
context:
space:
mode:
authorThibault Gagnaux <tgagnaux@gmail.com>2022-02-23 11:04:50 +0100
committerThibault Gagnaux <tgagnaux@gmail.com>2022-02-23 11:06:00 +0100
commita4879784e7be87b5ee184b47eb8faba635019a5d (patch)
tree0af50423e29ab1038d6007607791dc929a14f504 /src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
parentadbe33ac3ce08e4c5d73ba659313c7904273887a (diff)
downloadfrege-gradle-plugin-a4879784e7be87b5ee184b47eb8faba635019a5d.tar.gz
frege-gradle-plugin-a4879784e7be87b5ee184b47eb8faba635019a5d.tar.bz2
frege-gradle-plugin-a4879784e7be87b5ee184b47eb8faba635019a5d.zip
refactor: finishes the replFregeTask refactoring
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java')
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
index 7903d7e..67af55e 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java
@@ -1,7 +1,9 @@
package ch.fhnw.thga.gradleplugins;
+import static ch.fhnw.thga.gradleplugins.SharedTaskLogic.extractClassNameFromFregeModuleName;
import org.gradle.api.DefaultTask;
import org.gradle.api.file.DirectoryProperty;
+import org.gradle.api.file.FileTree;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider;
@@ -25,15 +27,29 @@ public abstract class ReplFregeTask extends DefaultTask {
public abstract DirectoryProperty getFregeOutputDir();
@Input
- @Option(option = "replSource",
- description = "The filename which you want to load into the repl, e.g. 'myFregeFile.fr'")
- public abstract Property<String> getReplSource();
+ @Option(option = "replModule",
+ description = "The full name of the module which you want to load into the repl, e.g. 'my.mod.Name'")
+ public abstract Property<String> getReplModule();
@Internal
public final Provider<String> getReplClassName()
{
- return getReplSource()
- .map(replSource -> replSource.substring(replSource.lastIndexOf(".")));
+ return getReplModule()
+ .map(replSource -> extractClassNameFromFregeModuleName(replSource));
+ }
+
+ @Internal
+ public final Provider<FileTree> getClasspathWithoutReplClassFile()
+ {
+ return getFregeOutputDir()
+ .map(outDir -> outDir.getAsFileTree())
+ .map(tree -> tree.matching(pattern -> pattern.exclude("**/*.java")))
+ .map(tree -> tree.matching(pattern -> pattern.exclude(
+ String.format(
+ "**/%s.class",
+ getReplClassName().get()
+ )
+ )));
}
@TaskAction
@@ -45,7 +61,7 @@ public abstract class ReplFregeTask extends DefaultTask {
getProject(),
getFregeDependencies(),
getFregeCompilerJar(),
- getFregeOutputDir())
+ getClasspathWithoutReplClassFile())
.get().getAsPath(),
REPL_MAIN_CLASS));
}