From bce724a73b15a6aee6244bba48fe9e49c221b486 Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Tue, 23 Nov 2021 10:09:10 +0100 Subject: [PATCH] [orx-git-archiver-gradle] Add Gradle plugin for GitArchiver --- orx-jvm/orx-git-archiver-gradle/README.md | 9 +++ .../orx-git-archiver-gradle/build.gradle.kts | 17 ++++++ .../src/main/kotlin/GitArchiveToMarkdown.kt | 59 +++++++++++++++++++ settings.gradle | 1 + 4 files changed, 86 insertions(+) create mode 100644 orx-jvm/orx-git-archiver-gradle/README.md create mode 100644 orx-jvm/orx-git-archiver-gradle/build.gradle.kts create mode 100644 orx-jvm/orx-git-archiver-gradle/src/main/kotlin/GitArchiveToMarkdown.kt diff --git a/orx-jvm/orx-git-archiver-gradle/README.md b/orx-jvm/orx-git-archiver-gradle/README.md new file mode 100644 index 00000000..9dff40ce --- /dev/null +++ b/orx-jvm/orx-git-archiver-gradle/README.md @@ -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. + diff --git a/orx-jvm/orx-git-archiver-gradle/build.gradle.kts b/orx-jvm/orx-git-archiver-gradle/build.gradle.kts new file mode 100644 index 00000000..27a4d669 --- /dev/null +++ b/orx-jvm/orx-git-archiver-gradle/build.gradle.kts @@ -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" + } + } +} \ No newline at end of file diff --git a/orx-jvm/orx-git-archiver-gradle/src/main/kotlin/GitArchiveToMarkdown.kt b/orx-jvm/orx-git-archiver-gradle/src/main/kotlin/GitArchiveToMarkdown.kt new file mode 100644 index 00000000..da02b1aa --- /dev/null +++ b/orx-jvm/orx-git-archiver-gradle/src/main/kotlin/GitArchiveToMarkdown.kt @@ -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 + + @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) + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index f255aa7a..0d06fba5 100644 --- a/settings.gradle +++ b/settings.gradle @@ -13,6 +13,7 @@ include 'openrndr-demos', 'orx-filter-extension', 'orx-fx', 'orx-jvm:orx-git-archiver', + 'orx-jvm:orx-git-archiver-gradle', 'orx-glslify', 'orx-gradient-descent', 'orx-integral-image',