From ac1b645ae3ff686c4b083bc189a68dd89a3c862b Mon Sep 17 00:00:00 2001 From: bogadana <30848157+bogadana@users.noreply.github.com> Date: Fri, 8 Jul 2022 21:17:39 +0200 Subject: [PATCH] docs: auto generate list of patches in `README.md` (#133) * feat: auto generate list of patches in `README.md` * sample readme * formatting * add codeblocks * sample readme * run on publish * make workflow commit readme * update readme [skip ci] * update gen [skip ci] * update workflow [skip ci] * add readme to release assets * fix: spacing in title Co-authored-by: Sculas Co-authored-by: oSumAtrIX --- .releaserc | 1 + README.md | 4 +- build.gradle.kts | 11 +++- .../app/revanced/meta/ReadmeGenerator.kt | 55 +++++++++++++++++++ 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/app/revanced/meta/ReadmeGenerator.kt diff --git a/.releaserc b/.releaserc index cdd49c590..7063ef326 100644 --- a/.releaserc +++ b/.releaserc @@ -15,6 +15,7 @@ "@semantic-release/git", { "assets": [ + "README.md", "CHANGELOG.md", "gradle.properties" ] diff --git a/README.md b/README.md index e4aacd311..717188219 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -Repo for all ReVanced patches - +# ReVanced Patches +🧩 Official patches by ReVanced diff --git a/build.gradle.kts b/build.gradle.kts index 01f38d62f..ee3a550f5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,5 @@ +import org.apache.tools.ant.taskdefs.ExecTask + plugins { kotlin("jvm") version "1.7.0" } @@ -49,12 +51,19 @@ tasks { } } } + register("generateReadme") { + description = "Generate README.md" + dependsOn(build) + + classpath = sourceSets["main"].runtimeClasspath + mainClass.set("app.revanced.patches.meta.ReadmeGenerator") + } // Dummy task to fix the Gradle semantic-release plugin. // Remove this if you forked it to support building only. // Tracking issue: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435 register("publish") { group = "publish" description = "Dummy task" - dependsOn(named("generateDex")) + dependsOn(named("generateDex"), named("generateReadme")) } } diff --git a/src/main/kotlin/app/revanced/meta/ReadmeGenerator.kt b/src/main/kotlin/app/revanced/meta/ReadmeGenerator.kt new file mode 100644 index 000000000..d5f3313c8 --- /dev/null +++ b/src/main/kotlin/app/revanced/meta/ReadmeGenerator.kt @@ -0,0 +1,55 @@ +package app.revanced.patches.meta + +import java.io.File +import kotlin.io.writeText +import kotlin.collections.first +import app.revanced.patcher.util.patch.implementation.JarPatchBundle +import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages +import app.revanced.patcher.extensions.PatchExtensions.patchName +import app.revanced.patcher.extensions.PatchExtensions.description + +class ReadmeGenerator { + companion object { + @JvmStatic + fun main(args: Array) { + //should be moved to a file? + val generalReadme = + """ + # ReVanced Patches + 🧩 Official patches by ReVanced + + # Patch list + """.trimIndent() + + val tableHeader = + """ + | 💊 Patch | 📜 Description | 🎯 Target Package | 🏹 Target Version | + |:-----:|:-----------:|:--------------:|:----------------------:| + """.trimIndent() + + val readmeFile = File("README.md") + + val buildDir = File("build/libs/") + val buildJar = buildDir.listFiles().first { it.name.startsWith("revanced-patches-") && it.name.endsWith(".jar") } + + val bundle = JarPatchBundle(buildJar.absolutePath).loadPatches() + + val builder = StringBuilder() + + builder.appendLine(generalReadme) + builder.appendLine(tableHeader) + + for (patch in bundle) { + val humanName = + patch.patchName.split('-').map { it.replaceFirstChar { it.uppercase() } }.joinToString(" ") + + val compatiblePackage = patch.compatiblePackages?.first() + val latestVersion = compatiblePackage?.versions?.maxByOrNull { it.replace(".", "").toInt() } ?: "all" + + builder.appendLine("|$humanName|${patch.description}|`${compatiblePackage?.name}`|$latestVersion|") + } + + readmeFile.writeText(builder.toString()) + } + } +}