From 8c987f0a58470953dc3ac1b9cdff1ac55aaa4e81 Mon Sep 17 00:00:00 2001 From: Thibault Gagnaux Date: Wed, 17 Nov 2021 09:50:12 +0100 Subject: feat: Adds incremental build and build cache support for the `fregeCompile` task --- src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java | 8 +++++++- src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'src/main') diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java index 020bc7c..9dc148f 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java @@ -13,21 +13,27 @@ import org.gradle.api.file.RegularFileProperty; import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; 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.OutputDirectory; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; +@CacheableTask public abstract class CompileFregeTask extends DefaultTask { private final JavaExec javaExec; @InputFile + @PathSensitive(PathSensitivity.RELATIVE) public abstract RegularFileProperty getFregeCompilerJar(); @InputDirectory + @PathSensitive(PathSensitivity.RELATIVE) public abstract DirectoryProperty getFregeMainSourceDir(); @Input @@ -60,4 +66,4 @@ public abstract class CompileFregeTask extends DefaultTask { .flatMap(Collection::stream).collect(Collectors.toList()); javaExec.setClasspath(getProject().files(getFregeCompilerJar())).setArgs(compilerArgs).exec(); } -} +} \ No newline at end of file diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java index f134ec2..ea02493 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java @@ -12,6 +12,8 @@ import org.gradle.api.provider.Property; public abstract class FregeExtension { public static final String DEFAULT_DOWNLOAD_DIRECTORY = "lib"; public static final String DEFAULT_RELATIVE_OUTPUT_DIR = "classes/main/frege"; + public static final String DEFAULT_RELATIVE_SOURCE_DIR = "src/main/frege"; + public static final List DEFAULT_COMPILER_FLAGS = List.of("-O", "-make"); public abstract Property getVersion(); @@ -30,8 +32,8 @@ public abstract class FregeExtension { @Inject public FregeExtension(ProjectLayout projectLayout) { getCompilerDownloadDir().convention(projectLayout.getProjectDirectory().dir(DEFAULT_DOWNLOAD_DIRECTORY)); - getMainSourceDir().convention(projectLayout.getProjectDirectory()); + getMainSourceDir().convention(projectLayout.getProjectDirectory().dir(DEFAULT_RELATIVE_SOURCE_DIR)); getOutputDir().convention(projectLayout.getBuildDirectory().dir(DEFAULT_RELATIVE_OUTPUT_DIR)); - getCompilerFlags().convention(List.of("-O", "-make")); + getCompilerFlags().convention(DEFAULT_COMPILER_FLAGS); } } -- cgit