From 420ecbdfde5ef96186fc0a805fa4d1d449d8d889 Mon Sep 17 00:00:00 2001 From: Thibault Gagnaux Date: Wed, 8 Dec 2021 19:19:06 +0100 Subject: feat: replFrege task v2 returns classpath with all dependencies --- .../ch/fhnw/thga/gradleplugins/ReplFregeTask.java | 27 ++++------------------ 1 file changed, 4 insertions(+), 23 deletions(-) (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java') diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java index 9541861..5a915c0 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java @@ -1,55 +1,36 @@ 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 getFregeDependencies(); @Internal public final Provider getClasspath() { return getFregeDependencies().map(depsClasspath -> { - return depsClasspath.isEmpty() ? getProject().files(getFregeCompilerJar(), getFregeOutputDir()) - : getProject().files(getFregeCompilerJar(), getFregeOutputDir(), depsClasspath); + return depsClasspath.isEmpty() ? getProject().files(getFregeCompilerJar()) + : getProject().files(getFregeCompilerJar(), depsClasspath); }); } - @Inject - public ReplFregeTask(ObjectFactory objectFactory) { - javaExec = objectFactory.newInstance(JavaExec.class); - } - @TaskAction - public void startFregeRepl() { - javaExec.setStandardInput(System.in); - javaExec.getMainClass().set(REPL_MAIN_CLASS); - javaExec.setClasspath(getClasspath().get()).exec(); + public void fregeReplDependencies() { + System.out.println(getClasspath().get().getAsPath()); } } -- cgit From 815cc93c870a2a857de8c5dd1dcc8c9aa5b4f2a8 Mon Sep 17 00:00:00 2001 From: Thibault Gagnaux Date: Fri, 10 Dec 2021 09:31:44 +0100 Subject: refactor: adds an internal `depsFrege` task and simplifes `replFrege` - `depsFregeTask`: only internal use for the vscode plugin to automate the repl code lens. - `replFregeTask`: simplified to only print the command to start the repl because starting and interacting through a console is not gradle's core strength. See https://github.com/tricktron/frege-gradle-plugin/issues/11. --- .../ch/fhnw/thga/gradleplugins/ReplFregeTask.java | 33 ++++++---------------- 1 file changed, 8 insertions(+), 25 deletions(-) (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java') diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java index 5a915c0..81da1cd 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/ReplFregeTask.java @@ -1,36 +1,19 @@ package ch.fhnw.thga.gradleplugins; import org.gradle.api.DefaultTask; -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.provider.Property; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputFile; -import org.gradle.api.tasks.Internal; +import org.gradle.api.file.ConfigurableFileCollection; +import org.gradle.api.tasks.InputFiles; 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"; - @InputFile - public abstract RegularFileProperty getFregeCompilerJar(); - - @Input - public abstract Property getFregeDependencies(); - - @Internal - public final Provider getClasspath() { - return getFregeDependencies().map(depsClasspath -> { - return depsClasspath.isEmpty() ? getProject().files(getFregeCompilerJar()) - : getProject().files(getFregeCompilerJar(), depsClasspath); - }); - } + @InputFiles + public abstract ConfigurableFileCollection getFregeClasspath(); @TaskAction - public void fregeReplDependencies() { - System.out.println(getClasspath().get().getAsPath()); + public void printStartFregeReplCommand() { + System.out.println("Execute the following command to start the Frege Repl:"); + System.out.println(String.format("java -cp %s %s", getFregeClasspath().getAsPath(), REPL_MAIN_CLASS)); } } -- cgit