diff options
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins')
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/FregeExtension.java | 33 | ||||
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java | 25 | ||||
-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()); } } } |