diff options
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java')
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java | 28 |
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())); }); } } |