[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 { sourceSets {
val preload by creating { val preload by creating {
this.java { this.java {
srcDir("src/preload/kotlin") srcDir("src/preload/kotlin")
} }
} }
val main by getting { val main by getting {
} }
} }

View File

@@ -1,10 +1,14 @@
import org.gradle.api.DefaultTask 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.DirectoryProperty
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.file.FileType import org.gradle.api.file.FileType
import org.gradle.api.provider.ListProperty import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property import org.gradle.api.provider.Property
import org.gradle.api.tasks.* import org.gradle.api.tasks.*
import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.register
import org.gradle.work.Incremental import org.gradle.work.Incremental
import org.gradle.work.InputChanges import org.gradle.work.InputChanges
@@ -103,5 +107,15 @@ object ScreenshotsHelper {
return task 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 package org.openrndr
import org.openrndr.ApplicationPreload
import org.openrndr.extensions.SingleScreenshot import org.openrndr.extensions.SingleScreenshot
/**
* This [Preload] class is used by the [CollectScreenshots] task to inject the [SingleScreenshot] extension
*/
class Preload : ApplicationPreload() { class Preload : ApplicationPreload() {
override fun onConfiguration(configuration: Configuration) {
// configuration.width = 1280
// configuration.height = 720
}
override fun onProgramSetup(program: Program) { override fun onProgramSetup(program: Program) {
println("installing single screenshot extension at 0") program.extend(SingleScreenshot()) {
program.extensions.add(0, SingleScreenshot().apply {
this.outputFile = System.getProperty("screenshotPath") this.outputFile = System.getProperty("screenshotPath")
setup(program) }
})
} }
} }