Files
orx/orx-jvm/orx-git-archiver-gradle/src/main/kotlin/GitArchiveToMarkdown.kt

59 lines
1.7 KiB
Kotlin

package org.openrndr.extra.gitarchiver
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.*
import org.gradle.work.InputChanges
import java.io.File
import javax.inject.Inject
abstract class GitArchiveToMarkdown @Inject constructor() : DefaultTask() {
@get:OutputDirectory
abstract val outputDir: DirectoryProperty
@get:InputDirectory
abstract val gitDir: DirectoryProperty
@get:InputDirectory
abstract val screenshotsDir: DirectoryProperty
@get:Input
abstract val historySize: Property<Int>
@TaskAction
fun execute(inputChanges: InputChanges) {
val parent = outputDir.asFile.get()
val git = GitProvider.create()
val references = git.logReferences(historySize.get())
val text = references.map { reference ->
val screenshots = screenshotsDir.asFile.get().listFiles().filter { file ->
file.extension == "png" && file.name.contains(reference)
}
println(screenshots)
screenshots.forEach {
it.copyTo(File(outputDir.asFile.get(), it.name))
}
val screenShotsMD = screenshots.map {
"![${it.nameWithoutExtension}](${it.name})"
}.joinToString("\n")
"""# $reference
|$screenShotsMD
|```
|${git.show(reference)}}
|```
""".trimMargin()
}.joinToString("\n")
File(parent, "README.md").writeText(text)
}
init {
outputDir.set(File("build/git-archive-markdown"))
gitDir.set(File(".git"))
screenshotsDir.set(File("screenshots"))
historySize.set(20)
}
}