[orx-git-archiver-gradle] Add Gradle plugin for GitArchiver
This commit is contained in:
9
orx-jvm/orx-git-archiver-gradle/README.md
Normal file
9
orx-jvm/orx-git-archiver-gradle/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# orx-git-archive-gradle
|
||||
|
||||
A Gradle plugin that turns a git history and `screenshots` directory into a markdown file.
|
||||
|
||||
## Usage
|
||||
|
||||
`openrndr-template` uses this plugin by default. All you need to do is use [orx-git-archiver](../orx-git-archiver) such
|
||||
that screenshots will have the Git commit id in their filename.
|
||||
|
||||
17
orx-jvm/orx-git-archiver-gradle/build.gradle.kts
Normal file
17
orx-jvm/orx-git-archiver-gradle/build.gradle.kts
Normal file
@@ -0,0 +1,17 @@
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
`java-gradle-plugin`
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":orx-jvm:orx-git-archiver"))
|
||||
}
|
||||
|
||||
gradlePlugin {
|
||||
plugins {
|
||||
create("gitArchiveToMarkdown") {
|
||||
id = "org.openrndr.extra.gitarchiver.tomarkdown"
|
||||
implementationClass = "org.openrndr.extra.gitarchiver.GitArchiveToMarkdown"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
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 {
|
||||
""
|
||||
}.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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user