aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java')
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
index 5fc89b2..18016f3 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
@@ -3,17 +3,32 @@ package ch.fhnw.thga.gradleplugins;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
+import org.gradle.api.file.FileCollection;
+import org.gradle.api.file.RegularFile;
+import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.TaskProvider;
+import ch.fhnw.thga.gradleplugins.internal.DependencyFregeTask;
+
public class FregePlugin implements Plugin<Project> {
public static final String SETUP_FREGE_TASK_NAME = "setupFrege";
public static final String COMPILE_FREGE_TASK_NAME = "compileFrege";
public static final String RUN_FREGE_TASK_NAME = "runFrege";
public static final String REPL_FREGE_TASK_NAME = "replFrege";
+ public static final String DEPS_FREGE_TASK_NAME = "depsFrege";
public static final String FREGE_PLUGIN_ID = "ch.fhnw.thga.frege";
public static final String FREGE_EXTENSION_NAME = "frege";
public static final String FREGE_IMPLEMENTATION_SCOPE = "implementation";
+ private FileCollection setupClasspath(Project project, Configuration dependencies,
+ Provider<RegularFile> fregeCompilerJar) {
+ if (dependencies.isEmpty()) {
+ return project.files(fregeCompilerJar);
+ } else {
+ return project.files(fregeCompilerJar, dependencies.getAsPath());
+ }
+ }
+
@Override
public void apply(Project project) {
Configuration implementation = project.getConfigurations().create(FREGE_IMPLEMENTATION_SCOPE);
@@ -41,11 +56,16 @@ public class FregePlugin implements Plugin<Project> {
task.getMainModule().set(extension.getMainModule());
task.getFregeDependencies().set(implementation.getAsPath());
});
+ project.getTasks().register(DEPS_FREGE_TASK_NAME,
+ DependencyFregeTask.class, task -> {
+ task.dependsOn(setupFregeCompilerTask);
+ task.getClasspath().setFrom(setupClasspath(project, implementation,
+ setupFregeCompilerTask.get().getFregeCompilerOutputPath()));
+ });
project.getTasks().register(REPL_FREGE_TASK_NAME, ReplFregeTask.class, task -> {
- task.dependsOn(compileFregeTask);
- task.getFregeCompilerJar().set(setupFregeCompilerTask.get().getFregeCompilerOutputPath());
- task.getFregeOutputDir().set(extension.getOutputDir());
- task.getFregeDependencies().set(implementation.getAsPath());
+ task.dependsOn(setupFregeCompilerTask);
+ task.getFregeClasspath().setFrom(setupClasspath(project, implementation,
+ setupFregeCompilerTask.get().getFregeCompilerOutputPath()));
});
}
}