aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins
diff options
context:
space:
mode:
authorThibault Gagnaux <thibault.gagnaux@bit.admin.ch>2021-07-07 17:21:33 +0200
committerThibault Gagnaux <thibault.gagnaux@bit.admin.ch>2021-07-07 17:21:33 +0200
commitcd5d39b867ad5435039d1a47244252078600ca0b (patch)
tree70fd7f74fc8d59fedeeff7923c4df5f217ec6cb5 /src/main/java/ch/fhnw/thga/gradleplugins
parent587d0943327c7bf26a6378c1a710b3b971102ea2 (diff)
downloadfrege-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.java27
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java29
-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());
}