[buildSrc] add screenshot helper for plain kotlin projects

This commit is contained in:
Edwin Jakobs
2021-09-01 09:20:40 +02:00
parent bf11867232
commit 8c5ccd691b
3 changed files with 19 additions and 12 deletions

View File

@@ -4,15 +4,12 @@ plugins {
}
sourceSets {
val preload by creating {
this.java {
srcDir("src/preload/kotlin")
}
}
val main by getting {
}
}

View File

@@ -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<CollectScreenshotsTask>("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
}
}

View File

@@ -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)
})
}
}
}