diff options
author | Thibault Gagnaux <tgagnaux@gmail.com> | 2022-02-23 11:04:50 +0100 |
---|---|---|
committer | Thibault Gagnaux <tgagnaux@gmail.com> | 2022-02-23 11:06:00 +0100 |
commit | a4879784e7be87b5ee184b47eb8faba635019a5d (patch) | |
tree | 0af50423e29ab1038d6007607791dc929a14f504 /src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java | |
parent | adbe33ac3ce08e4c5d73ba659313c7904273887a (diff) | |
download | frege-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.java | 28 |
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)); } |