aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins
diff options
context:
space:
mode:
authorThibault Gagnaux <tgagnaux@gmail.com>2021-11-09 22:26:45 +0100
committerThibault Gagnaux <tgagnaux@gmail.com>2021-11-09 22:26:45 +0100
commit42bdca9c70e54d095e9ebfd69e82d1bca15bf9ac (patch)
tree03370001ccf6b5e3d56552f8edfe5aaf9432acfd /src/main/java/ch/fhnw/thga/gradleplugins
parent2b2b16037a7a2083a6929c20fbf8ac25763f8ec7 (diff)
downloadfrege-gradle-plugin-42bdca9c70e54d095e9ebfd69e82d1bca15bf9ac.tar.gz
frege-gradle-plugin-42bdca9c70e54d095e9ebfd69e82d1bca15bf9ac.tar.bz2
frege-gradle-plugin-42bdca9c70e54d095e9ebfd69e82d1bca15bf9ac.zip
feat: adds two tests and makes them pass for new `runFregeTask`
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins')
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java1
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java5
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java14
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java41
4 files changed, 56 insertions, 5 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java
index 551f6c5..6ba6212 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java
@@ -29,7 +29,6 @@ public abstract class CompileFregeTask extends DefaultTask {
@Inject
public CompileFregeTask(ObjectFactory objectFactory) {
javaExec = objectFactory.newInstance(JavaExec.class);
-
}
@TaskAction
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java
index fd4f1b4..139429b 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java
@@ -8,11 +8,14 @@ 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 abstract Property<String> getVersion();
public abstract Property<String> getRelease();
+ public abstract Property<String> getMainModule();
+
public abstract DirectoryProperty getCompilerDownloadDir();
public abstract DirectoryProperty getMainSourceDir();
@@ -23,7 +26,7 @@ public abstract class FregeExtension {
public FregeExtension(ProjectLayout projectLayout) {
getCompilerDownloadDir().convention(projectLayout.getProjectDirectory().dir(DEFAULT_DOWNLOAD_DIRECTORY));
getMainSourceDir().convention(projectLayout.getProjectDirectory());
- getOutputDir().convention(projectLayout.getBuildDirectory().dir("classes/main/frege"));
+ getOutputDir().convention(projectLayout.getBuildDirectory().dir(DEFAULT_RELATIVE_OUTPUT_DIR));
}
}
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
index 4f0bb34..8c50a5f 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
@@ -7,6 +7,7 @@ import org.gradle.api.tasks.TaskProvider;
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 FREGE_PLUGIN_ID = "ch.fhnw.thga.frege";
public static final String FREGE_EXTENSION_NAME = "frege";
@@ -20,11 +21,18 @@ public class FregePlugin implements Plugin<Project> {
task.getDownloadDir().set(extension.getCompilerDownloadDir());
});
- project.getTasks().register(COMPILE_FREGE_TASK_NAME, CompileFregeTask.class, task -> {
- task.dependsOn(setupFregeCompilerTask);
+ TaskProvider<CompileFregeTask> compileFregeTask = project.getTasks().register(COMPILE_FREGE_TASK_NAME,
+ CompileFregeTask.class, task -> {
+ task.dependsOn(setupFregeCompilerTask);
+ task.getFregeCompilerJar().set(setupFregeCompilerTask.get().getFregeCompilerOutputPath());
+ task.getFregeMainSourceDir().set(extension.getMainSourceDir());
+ task.getFregeOutputDir().set(extension.getOutputDir());
+ });
+ project.getTasks().register(RUN_FREGE_TASK_NAME, RunFregeTask.class, task -> {
+ task.dependsOn(compileFregeTask);
task.getFregeCompilerJar().set(setupFregeCompilerTask.get().getFregeCompilerOutputPath());
- task.getFregeMainSourceDir().set(extension.getMainSourceDir());
task.getFregeOutputDir().set(extension.getOutputDir());
+ task.getMainModule().set(extension.getMainModule());
});
}
}
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java
new file mode 100644
index 0000000..2f619a5
--- /dev/null
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java
@@ -0,0 +1,41 @@
+package ch.fhnw.thga.gradleplugins;
+
+import javax.inject.Inject;
+
+import org.gradle.api.DefaultTask;
+import org.gradle.api.file.DirectoryProperty;
+import org.gradle.api.file.RegularFileProperty;
+import org.gradle.api.logging.Logger;
+import org.gradle.api.logging.Logging;
+import org.gradle.api.model.ObjectFactory;
+import org.gradle.api.provider.Property;
+import org.gradle.api.tasks.Input;
+import org.gradle.api.tasks.InputDirectory;
+import org.gradle.api.tasks.InputFile;
+import org.gradle.api.tasks.JavaExec;
+import org.gradle.api.tasks.TaskAction;
+
+public abstract class RunFregeTask extends DefaultTask {
+ public static final Logger LOGGER = Logging.getLogger(SetupFregeTask.class);
+ private final JavaExec javaExec;
+
+ @InputFile
+ public abstract RegularFileProperty getFregeCompilerJar();
+
+ @InputDirectory
+ public abstract DirectoryProperty getFregeOutputDir();
+
+ @Input
+ public abstract Property<String> getMainModule();
+
+ @Inject
+ public RunFregeTask(ObjectFactory objectFactory) {
+ javaExec = objectFactory.newInstance(JavaExec.class);
+ }
+
+ @TaskAction
+ public void runFrege() {
+ javaExec.getMainClass().set(getMainModule());
+ javaExec.setClasspath(getProject().files(getFregeCompilerJar(), getFregeOutputDir())).exec();
+ }
+}