From e9d9c23293953e8584a7fd4a11319b756580a7ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Kautler?= Date: Wed, 22 Apr 2026 16:23:07 +0200 Subject: [PATCH] refactor(server): Make commit_lenient a proper significant version option --- .../api/action-binding-generator.api | 1 + .../actionbindinggenerator/domain/ActionCoords.kt | 3 +++ .../domain/SignificantVersion.kt | 5 +++++ .../actionbindinggenerator/generation/Generation.kt | 3 ++- .../workflows/jitbindingserver/RequestParsing.kt | 11 ++++------- .../workflows/jitbindingserver/ArtifactRoutesTest.kt | 1 - .../workflows/jitbindingserver/RequestParsingTest.kt | 3 ++- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/action-binding-generator/api/action-binding-generator.api b/action-binding-generator/api/action-binding-generator.api index 7bfbcb9a8b..9dc904e866 100644 --- a/action-binding-generator/api/action-binding-generator.api +++ b/action-binding-generator/api/action-binding-generator.api @@ -69,6 +69,7 @@ public final class io/github/typesafegithub/workflows/actionbindinggenerator/dom } public final class io/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion : java/lang/Enum { + public static final field COMMIT_LENIENT Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion; public static final field FULL Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion; public static final field MAJOR Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion; public static final field MINOR Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion; diff --git a/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords.kt b/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords.kt index fa56886c15..4a3518509a 100644 --- a/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords.kt +++ b/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords.kt @@ -1,5 +1,6 @@ package io.github.typesafegithub.workflows.actionbindinggenerator.domain +import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.COMMIT_LENIENT import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.FULL public data class ActionCoords( @@ -36,6 +37,8 @@ public val ActionCoords.prettyPrint: String get() = "$prettyPrintWithoutVersion@ public val ActionCoords.prettyPrintWithoutVersion: String get() = "$owner/$fullName${ significantVersion.takeUnless { it == FULL }?.let { " with $it version" } ?: "" +}${ + if ((significantVersion == COMMIT_LENIENT) && (comment != null)) " and comment '$comment'" else "" }" /** diff --git a/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion.kt b/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion.kt index 60662dd7d4..379ac02690 100644 --- a/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion.kt +++ b/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion.kt @@ -16,6 +16,11 @@ public enum class SignificantVersion { */ MINOR, + /** + * Write the commit ID as the version to the generated YAML. + */ + COMMIT_LENIENT, + /** * Write the full version to the generated YAML. */ diff --git a/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/generation/Generation.kt b/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/generation/Generation.kt index cd940f86f0..4bd81df904 100644 --- a/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/generation/Generation.kt +++ b/action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/generation/Generation.kt @@ -18,6 +18,7 @@ import com.squareup.kotlinpoet.buildCodeBlock import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionTypings import io.github.typesafegithub.workflows.actionbindinggenerator.domain.MetadataRevision +import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.COMMIT_LENIENT import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.FULL import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.MAJOR import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.MINOR @@ -465,7 +466,7 @@ private fun TypeSpec.Builder.inheritsFromRegularAction( when (coords.significantVersion) { MAJOR -> coords.version.majorVersion MINOR -> coords.version.minorVersion - FULL -> coords.version + COMMIT_LENIENT, FULL -> coords.version }, ).also { if (coords.comment != null) { diff --git a/jit-binding-server/src/main/kotlin/io/github/typesafegithub/workflows/jitbindingserver/RequestParsing.kt b/jit-binding-server/src/main/kotlin/io/github/typesafegithub/workflows/jitbindingserver/RequestParsing.kt index b8212eccc8..a16cdf3045 100644 --- a/jit-binding-server/src/main/kotlin/io/github/typesafegithub/workflows/jitbindingserver/RequestParsing.kt +++ b/jit-binding-server/src/main/kotlin/io/github/typesafegithub/workflows/jitbindingserver/RequestParsing.kt @@ -2,6 +2,7 @@ package io.github.typesafegithub.workflows.jitbindingserver import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion +import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.COMMIT_LENIENT import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.FULL import io.github.typesafegithub.workflows.mavenbinding.BindingsServerRequest import io.ktor.http.Parameters @@ -23,11 +24,6 @@ fun Parameters.parseRequest(extractVersion: Boolean): BindingsServerRequest? { .entries .find { "$it" == significantVersionString } } ?: FULL - val pinToCommit = - nameAndPathAndSignificantVersionParts - .drop(1) - .takeIf { it.isNotEmpty() } - ?.single() == "commit_lenient" val nameAndPathParts = nameAndPath.split("__") val name = nameAndPathParts.first() val path = @@ -38,7 +34,7 @@ fun Parameters.parseRequest(extractVersion: Boolean): BindingsServerRequest? { val version = if (extractVersion) { val versionPart = this["version"]!! - if (pinToCommit) { + if (significantVersion == COMMIT_LENIENT) { val versionParts = versionPart.split("__") if (versionParts.size < 2) { return null @@ -50,7 +46,8 @@ fun Parameters.parseRequest(extractVersion: Boolean): BindingsServerRequest? { } else { "irrelevant" } - val comment = if (pinToCommit && extractVersion) this["version"]!!.split("__")[0] else null + val comment = + if ((significantVersion == COMMIT_LENIENT) && extractVersion) this["version"]!!.split("__")[0] else null val versionForTypings = if (extractVersion) this["version"]!!.split("__")[0] else "irrelevant" return BindingsServerRequest( diff --git a/jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/ArtifactRoutesTest.kt b/jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/ArtifactRoutesTest.kt index 2379429e07..847408d02d 100644 --- a/jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/ArtifactRoutesTest.kt +++ b/jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/ArtifactRoutesTest.kt @@ -1,6 +1,5 @@ package io.github.typesafegithub.workflows.jitbindingserver -import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource import io.github.typesafegithub.workflows.mavenbinding.BindingsServerRequest import io.github.typesafegithub.workflows.mavenbinding.TextArtifact diff --git a/jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/RequestParsingTest.kt b/jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/RequestParsingTest.kt index c1f3da3e42..4e968f118d 100644 --- a/jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/RequestParsingTest.kt +++ b/jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/RequestParsingTest.kt @@ -1,6 +1,7 @@ package io.github.typesafegithub.workflows.jitbindingserver import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords +import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.COMMIT_LENIENT import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.FULL import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.MAJOR import io.github.typesafegithub.workflows.actionbindinggenerator.domain.SignificantVersion.MINOR @@ -123,7 +124,7 @@ class RequestParsingTest : owner = "o", name = "act", version = "323898970401d85df44b3324a610af9a862d54b3", - significantVersion = FULL, + significantVersion = COMMIT_LENIENT, comment = "v1.2.3", versionForTypings = "v1.2.3", path = null,