diff options
author | Thibault Gagnaux <thibault.gagnaux@bit.admin.ch> | 2021-07-07 17:21:33 +0200 |
---|---|---|
committer | Thibault Gagnaux <thibault.gagnaux@bit.admin.ch> | 2021-07-07 17:21:33 +0200 |
commit | cd5d39b867ad5435039d1a47244252078600ca0b (patch) | |
tree | 70fd7f74fc8d59fedeeff7923c4df5f217ec6cb5 /src/main/java/ch/fhnw/thga/gradleplugins | |
parent | 587d0943327c7bf26a6378c1a710b3b971102ea2 (diff) | |
download | frege-gradle-plugin-cd5d39b867ad5435039d1a47244252078600ca0b.tar.gz frege-gradle-plugin-cd5d39b867ad5435039d1a47244252078600ca0b.tar.bz2 frege-gradle-plugin-cd5d39b867ad5435039d1a47244252078600ca0b.zip |
Refactors tests
- Uses the builder pattern to simplify the creation of `build.gradle` test
files.
- Adds `gradlew clean test` github workflow
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins')
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java (renamed from src/main/java/ch/fhnw/thga/gradleplugins/FregeCompileTask.java) | 8 | ||||
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java | 27 | ||||
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java | 29 | ||||
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java (renamed from src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java) | 19 |
4 files changed, 35 insertions, 48 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregeCompileTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java index 0f19f08..551f6c5 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/FregeCompileTask.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java @@ -14,7 +14,7 @@ import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.TaskAction; -public abstract class FregeCompileTask extends DefaultTask { +public abstract class CompileFregeTask extends DefaultTask { private final JavaExec javaExec; @InputFile @@ -27,16 +27,16 @@ public abstract class FregeCompileTask extends DefaultTask { public abstract DirectoryProperty getFregeOutputDir(); @Inject - public FregeCompileTask(ObjectFactory objectFactory) { + public CompileFregeTask(ObjectFactory objectFactory) { javaExec = objectFactory.newInstance(JavaExec.class); } - @TaskAction public void compileFrege() { String fregeMainSourceDir = getFregeMainSourceDir().getAsFile().get().getAbsolutePath(); - List<String> args = List.of("-v", "-d", getFregeOutputDir().get().getAsFile().getAbsolutePath(), "-sp", fregeMainSourceDir, fregeMainSourceDir); + List<String> args = List.of("-v", "-d", getFregeOutputDir().get().getAsFile().getAbsolutePath(), "-sp", + fregeMainSourceDir, fregeMainSourceDir); javaExec.setClasspath(getProject().files(getFregeCompilerJar())).setArgs(args).exec(); } } diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java index 2763ebc..fd4f1b4 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java @@ -1,36 +1,29 @@ package ch.fhnw.thga.gradleplugins; -import java.io.File; - import javax.inject.Inject; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.ProjectLayout; import org.gradle.api.provider.Property; - public abstract class FregeExtension { - public static final String DEFAULT_FREGE_EXTENSION_NAMESPACE = "frege"; - public static final String FREGE_VERSION_BUILD_FILE_KEY = "fregeVersion"; - public static final String FREGE_RELEASE_BUILD_FILE_KEY = "fregeRelease"; - public static final String FREGE_COMPILER_OUTPUT_DIRECTORY_KEY = "fregeCompilerOutputDirectory"; + public static final String DEFAULT_DOWNLOAD_DIRECTORY = "lib"; + + public abstract Property<String> getVersion(); - public abstract Property<String> getFregeVersion(); + public abstract Property<String> getRelease(); - public abstract Property<String> getFregeRelease(); + public abstract DirectoryProperty getCompilerDownloadDir(); - public abstract DirectoryProperty getFregeCompilerOutputDirectory(); + public abstract DirectoryProperty getMainSourceDir(); - public abstract DirectoryProperty getFregeMainSourceDir(); - - public abstract DirectoryProperty getFregeOutputDir(); + public abstract DirectoryProperty getOutputDir(); @Inject public FregeExtension(ProjectLayout projectLayout) { - getFregeCompilerOutputDirectory().convention(projectLayout.getProjectDirectory().dir("lib")); - // TODO: change to projectDir/src/main/frege - getFregeMainSourceDir().convention(projectLayout.getProjectDirectory()); - getFregeOutputDir().convention(projectLayout.getBuildDirectory().dir("classes/main/frege")); + getCompilerDownloadDir().convention(projectLayout.getProjectDirectory().dir(DEFAULT_DOWNLOAD_DIRECTORY)); + getMainSourceDir().convention(projectLayout.getProjectDirectory()); + getOutputDir().convention(projectLayout.getBuildDirectory().dir("classes/main/frege")); } } diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java index 429edbb..4f0bb34 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java @@ -5,33 +5,26 @@ import org.gradle.api.Project; import org.gradle.api.tasks.TaskProvider; public class FregePlugin implements Plugin<Project> { - public static final String SETUP_FREGE_COMPILER_TASK_NAME = "setupFregeCompiler"; - public static final String FREGE_COMPILE_TASK_NAME = "fregeCompile"; + public static final String SETUP_FREGE_TASK_NAME = "setupFrege"; + public static final String COMPILE_FREGE_TASK_NAME = "compileFrege"; public static final String FREGE_PLUGIN_ID = "ch.fhnw.thga.frege"; public static final String FREGE_EXTENSION_NAME = "frege"; @Override public void apply(Project project) { FregeExtension extension = project.getExtensions().create(FREGE_EXTENSION_NAME, FregeExtension.class); - TaskProvider<SetupFregeCompilerTask> setupFregeCompilerTask = - project.getTasks().register(SETUP_FREGE_COMPILER_TASK_NAME, SetupFregeCompilerTask.class, task -> { - task.getFregeVersion().set(extension.getFregeVersion()); - task.getFregeRelease().set(extension.getFregeRelease()); - task.getFregeCompilerOutputDirectory().set(extension.getFregeCompilerOutputDirectory()); - }); + TaskProvider<SetupFregeTask> setupFregeCompilerTask = project.getTasks().register(SETUP_FREGE_TASK_NAME, + SetupFregeTask.class, task -> { + task.getVersion().set(extension.getVersion()); + task.getRelease().set(extension.getRelease()); + task.getDownloadDir().set(extension.getCompilerDownloadDir()); + }); - project.getTasks().register(FREGE_COMPILE_TASK_NAME, FregeCompileTask.class, task -> { + project.getTasks().register(COMPILE_FREGE_TASK_NAME, CompileFregeTask.class, task -> { task.dependsOn(setupFregeCompilerTask); task.getFregeCompilerJar().set(setupFregeCompilerTask.get().getFregeCompilerOutputPath()); - task.getFregeMainSourceDir().set(extension.getFregeMainSourceDir()); - task.getFregeOutputDir().set(extension.getFregeOutputDir()); + task.getFregeMainSourceDir().set(extension.getMainSourceDir()); + task.getFregeOutputDir().set(extension.getOutputDir()); }); - //Configuration fregeCompiler = project.getConfigurations().create("fregeCompiler", c -> { - // c.setVisible(false); - // c.setCanBeConsumed(false); - // c.setCanBeResolved(true); - // c.setDescription("The frege compiler"); - // c.defaultDependencies(d -> d.add(project.getDependencies().create("frege3.25.84.jar"))); - //}); } } diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java index b3d08a1..7f92053 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java @@ -20,34 +20,34 @@ import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; -public abstract class SetupFregeCompilerTask extends DefaultTask { - public static final Logger LOGGER = Logging.getLogger(SetupFregeCompilerTask.class); +public abstract class SetupFregeTask extends DefaultTask { + public static final Logger LOGGER = Logging.getLogger(SetupFregeTask.class); private static final String FREGE_GITHUB_URL_PREFIX = "https://github.com/Frege/frege/releases/download"; @Input - public abstract Property<String> getFregeVersion(); + public abstract Property<String> getVersion(); @Input - public abstract Property<String> getFregeRelease(); + public abstract Property<String> getRelease(); @Internal - public abstract DirectoryProperty getFregeCompilerOutputDirectory(); + public abstract DirectoryProperty getDownloadDir(); @Internal public Provider<String> getFregeVersionJarName() { - return getFregeVersion().map(version -> "frege" + version + ".jar"); + return getVersion().map(version -> "frege" + version + ".jar"); } @Internal public Provider<String> getDownloadUrl() { return getFregeVersionJarName() - .map(name -> String.join("/", FREGE_GITHUB_URL_PREFIX, getFregeRelease().get(), name)); + .map(name -> String.join("/", FREGE_GITHUB_URL_PREFIX, getRelease().get(), name)); } @OutputFile public Provider<RegularFile> getFregeCompilerOutputPath() { - return getFregeCompilerOutputDirectory().file(getFregeVersionJarName()); + return getDownloadDir().file(getFregeVersionJarName()); } @TaskAction @@ -57,7 +57,8 @@ public abstract class SetupFregeCompilerTask extends DefaultTask { FileOutputStream fregeCompilerOutputStream = new FileOutputStream(fregeCompilerOutputPath);) { FileChannel writeChannel = fregeCompilerOutputStream.getChannel(); writeChannel.transferFrom(readChannel, 0, Long.MAX_VALUE); - LOGGER.lifecycle(String.format("Successfully downloaded %s to: %s", getFregeVersionJarName().get(), fregeCompilerOutputPath)); + LOGGER.lifecycle(String.format("Successfully downloaded %s to: %s", getFregeVersionJarName().get(), + fregeCompilerOutputPath)); } catch (IOException e) { throw new GradleException(e.getMessage()); } |