aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins')
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java33
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java25
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java (renamed from src/main/java/ch/fhnw/thga/gradleplugins/FregeInitTask.java)27
3 files changed, 58 insertions, 27 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java
new file mode 100644
index 0000000..5e8834d
--- /dev/null
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java
@@ -0,0 +1,33 @@
+package ch.fhnw.thga.gradleplugins;
+
+import javax.inject.Inject;
+
+import org.gradle.api.file.ProjectLayout;
+import org.gradle.api.file.RegularFileProperty;
+import org.gradle.api.provider.Property;
+import org.gradle.api.provider.Provider;
+
+import groovy.transform.Internal;
+
+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_BUILD_FILE_KEY = "fregeCompilerPath";
+
+ public abstract Property<String> getFregeVersion();
+
+ public abstract Property<String> getFregeRelease();
+
+ public abstract RegularFileProperty getFregeCompilerPath();
+
+ @Internal
+ public Provider<String> getDefaultJarName() {
+ return getFregeVersion().map(version -> version + ".jar");
+ }
+
+ @Inject
+ public FregeExtension(ProjectLayout projectLayout) {
+ getFregeCompilerPath().set(projectLayout.getProjectDirectory().file("lib/frege" + getDefaultJarName()));
+ }
+}
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
index 678a10c..ffa788f 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
@@ -2,19 +2,28 @@ 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.RegularFile;
+import org.gradle.api.provider.Property;
public class FregePlugin implements Plugin<Project> {
+ public static final String SETUP_FREGE_COMPILER_TASK_NAME = "setupFregeCompiler";
+ 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) {
- project.getTasks().create("fregeInit", FregeInitTask.class);
- 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")));
+ FregeExtension extension = project.getExtensions().create(FREGE_EXTENSION_NAME, FregeExtension.class);
+ project.getTasks().register(SETUP_FREGE_COMPILER_TASK_NAME, SetupFregeCompilerTask.class, task -> {
+ task.getFregeVersion().set(extension.getFregeVersion());
+ task.getFregeRelease().set(extension.getFregeRelease());
+ task.getFregeCompilerPath().set(extension.getFregeCompilerPath());
});
+ //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/FregeInitTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java
index e96bfb1..a7f48ba 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/FregeInitTask.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java
@@ -2,26 +2,20 @@ package ch.fhnw.thga.gradleplugins;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.net.MalformedURLException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.nio.channels.ReadableByteChannel;
-import org.apache.log4j.Logger;
import org.gradle.api.DefaultTask;
-import org.gradle.api.file.ProjectLayout;
-import org.gradle.api.file.RegularFile;
+import org.gradle.api.GradleException;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction;
-public abstract class FregeInitTask extends DefaultTask {
- private final static Logger LOGGER = Logger.getLogger(FregeInitTask.class.getName());
- private static final String DEFAULT_FREGE_VERSION = "3.25.84";
- private static final String DEFAULT_FREGE_RELEASE = "3.25alpha";
+public abstract class SetupFregeCompilerTask extends DefaultTask {
@Input
public abstract Property<String> getFregeVersion();
@@ -30,25 +24,20 @@ public abstract class FregeInitTask extends DefaultTask {
public abstract Property<String> getFregeRelease();
@OutputFile
- public abstract RegularFileProperty getFregeCompilerJar();
-
- public FregeInitTask() {
- getFregeVersion().convention(DEFAULT_FREGE_VERSION);
- getFregeRelease().convention(DEFAULT_FREGE_RELEASE);
- getFregeCompilerJar().convention(getProject().getLayout().getBuildDirectory().file("lib/frege" + getFregeVersion() + ".jar"));
- }
+ public abstract RegularFileProperty getFregeCompilerPath();
@TaskAction
public void downloadFregeCompiler() {
try {
ReadableByteChannel readChannel = Channels.newChannel(
new URL("https://github.com/Frege/frege/releases/download/" +
- getFregeRelease().get() + "/frege" + getFregeVersion() + ".jar").openStream());
- FileOutputStream fregeCompilerDestinationPath = new FileOutputStream(getFregeCompilerJar().get().getAsFile().getAbsolutePath());
+ getFregeRelease().get() + "/frege" + getFregeVersion().get() + ".jar").openStream());
+ FileOutputStream fregeCompilerDestinationPath = new FileOutputStream(getFregeCompilerPath().get().getAsFile().getAbsolutePath());
FileChannel writeChannel = fregeCompilerDestinationPath.getChannel();
writeChannel.transferFrom(readChannel, 0, Long.MAX_VALUE);
- } catch (Exception e) {
- LOGGER.error(e.getMessage(), e.getCause());
+ System.out.println("Successfully downloaded compiler to" + getFregeCompilerPath().get());
+ } catch (IOException e) {
+ throw new GradleException(e.getMessage());
}
}
}