From 8c5ccd691b829a156c5dbf4648b2bc1f6ad69acf Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Wed, 1 Sep 2021 09:20:40 +0200 Subject: [PATCH] [buildSrc] add screenshot helper for plain kotlin projects --- buildSrc/build.gradle.kts | 3 --- buildSrc/src/main/kotlin/CollectScreenShots.kt | 14 ++++++++++++++ buildSrc/src/preload/kotlin/ApplicationPreload.kt | 14 +++++--------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 09adf245..25d4c2d4 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -4,15 +4,12 @@ plugins { } sourceSets { - val preload by creating { this.java { srcDir("src/preload/kotlin") } } val main by getting { - - } } diff --git a/buildSrc/src/main/kotlin/CollectScreenShots.kt b/buildSrc/src/main/kotlin/CollectScreenShots.kt index eb1775ac..0e0afc73 100644 --- a/buildSrc/src/main/kotlin/CollectScreenShots.kt +++ b/buildSrc/src/main/kotlin/CollectScreenShots.kt @@ -1,10 +1,14 @@ import org.gradle.api.DefaultTask +import org.gradle.api.Project +import org.gradle.api.Script +import org.gradle.api.Task import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.FileCollection import org.gradle.api.file.FileType import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.* +import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.register import org.gradle.work.Incremental import org.gradle.work.InputChanges @@ -103,5 +107,15 @@ object ScreenshotsHelper { return task } + + fun collectScreenshots(project: Project, sourceSet: SourceSet, config: CollectScreenshotsTask.() -> Unit): CollectScreenshotsTask { + val task = project.tasks.register("collectScreenshots").get() + task.outputDir.set(project.file(project.projectDir.toString() + "/images")) + task.inputDir.set(File(project.buildDir, "classes/kotlin/${sourceSet.name}")) + task.runtimeDependencies.set(sourceSet.runtimeClasspath) + task.config() + task.dependsOn(sourceSet.output) + return task + } } diff --git a/buildSrc/src/preload/kotlin/ApplicationPreload.kt b/buildSrc/src/preload/kotlin/ApplicationPreload.kt index 65bb30f0..36d52918 100644 --- a/buildSrc/src/preload/kotlin/ApplicationPreload.kt +++ b/buildSrc/src/preload/kotlin/ApplicationPreload.kt @@ -1,18 +1,14 @@ package org.openrndr -import org.openrndr.ApplicationPreload import org.openrndr.extensions.SingleScreenshot +/** + * This [Preload] class is used by the [CollectScreenshots] task to inject the [SingleScreenshot] extension + */ class Preload : ApplicationPreload() { - override fun onConfiguration(configuration: Configuration) { -// configuration.width = 1280 -// configuration.height = 720 - } override fun onProgramSetup(program: Program) { - println("installing single screenshot extension at 0") - program.extensions.add(0, SingleScreenshot().apply { + program.extend(SingleScreenshot()) { this.outputFile = System.getProperty("screenshotPath") - setup(program) - }) + } } } \ No newline at end of file