Skip to content

Commit 1b84a3e

Browse files
authored
feat!: mark client-side bindings as experimental (#1211)
Fixes #1207.
1 parent 9127914 commit 1b84a3e

File tree

8 files changed

+32
-0
lines changed

8 files changed

+32
-0
lines changed

action-binding-generator/api/action-binding-generator.api

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,3 +192,6 @@ public final class io/github/typesafegithub/workflows/actionbindinggenerator/Typ
192192
public static fun values ()[Lio/github/typesafegithub/workflows/actionbindinggenerator/TypingActualSource;
193193
}
194194

195+
public abstract interface annotation class io/github/typesafegithub/workflows/actionbindinggenerator/annotations/ExperimentalClientSideBindings : java/lang/annotation/Annotation {
196+
}
197+

action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/GenerateActionBindingsCliHelper.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.typesafegithub.workflows.actionbindinggenerator
22

3+
import io.github.typesafegithub.workflows.actionbindinggenerator.annotations.ExperimentalClientSideBindings
34
import io.github.typesafegithub.workflows.shared.internal.findGitRoot
45
import java.nio.file.Path
56
import kotlin.io.path.div
@@ -13,6 +14,7 @@ import kotlin.io.path.div
1314
* @param sourceFile Path to the script where this function is called from. Typically a result of an expression like
1415
* [__FILE__.toPath()].
1516
*/
17+
@ExperimentalClientSideBindings
1618
public fun generateActionBindings(
1719
args: Array<String>,
1820
sourceFile: Path,

action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/Generation.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,11 @@ private fun generateActionClass(
143143
): TypeSpec {
144144
return TypeSpec.classBuilder(className)
145145
.addModifiers(KModifier.DATA)
146+
.apply {
147+
if (generateForScript) {
148+
addExperimentalAnnotation()
149+
}
150+
}
146151
.addKdoc(actionKdoc(metadata, coords))
147152
.addMaybeDeprecated(coords)
148153
.inheritsFromRegularAction(coords, metadata, className, generateForScript = generateForScript)
@@ -156,6 +161,13 @@ private fun generateActionClass(
156161
.build()
157162
}
158163

164+
private fun TypeSpec.Builder.addExperimentalAnnotation() {
165+
addAnnotation(
166+
AnnotationSpec.builder(ClassName("io.github.typesafegithub.workflows.annotations", "ExperimentalClientSideBindings"))
167+
.build(),
168+
)
169+
}
170+
159171
private fun TypeSpec.Builder.addCustomTypes(
160172
typings: Map<String, Typing>,
161173
coords: ActionCoords,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package io.github.typesafegithub.workflows.actionbindinggenerator.annotations
2+
3+
@RequiresOptIn
4+
public annotation class ExperimentalClientSideBindings

action-binding-generator/src/test/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/GenerateActionBindingsCliHelperTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.github.typesafegithub.workflows.actionbindinggenerator
22

3+
import io.github.typesafegithub.workflows.actionbindinggenerator.annotations.ExperimentalClientSideBindings
34
import io.kotest.core.spec.style.FunSpec
45
import io.kotest.engine.spec.tempdir
56
import io.kotest.matchers.shouldBe
67

8+
@OptIn(ExperimentalClientSideBindings::class)
79
class GenerateActionBindingsCliHelperTest : FunSpec({
810
test("${::generateActionBindings.name} - smoke test") {
911
// given

action-binding-generator/src/test/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/GenerationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ class GenerationTest : FunSpec({
436436
"DEPRECATION",
437437
)
438438
439+
import io.github.typesafegithub.workflows.annotations.ExperimentalClientSideBindings
439440
import io.github.typesafegithub.workflows.domain.actions.Action
440441
import io.github.typesafegithub.workflows.domain.actions.RegularAction
441442
import java.util.LinkedHashMap
@@ -455,6 +456,7 @@ class GenerationTest : FunSpec({
455456
*
456457
* [Action on GitHub](https://github.com/john-smith/action-for-script)
457458
*/
459+
@ExperimentalClientSideBindings
458460
public data class ActionForScript private constructor(
459461
/**
460462
* Short description

github-workflows-kt/api/github-workflows-kt.api

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
public abstract interface annotation class io/github/typesafegithub/workflows/annotations/ExperimentalClientSideBindings : java/lang/annotation/Annotation {
2+
}
3+
14
public abstract class io/github/typesafegithub/workflows/domain/AbstractResult {
25
public final fun eq (Lio/github/typesafegithub/workflows/domain/AbstractResult$Status;)Ljava/lang/String;
36
public final fun neq (Lio/github/typesafegithub/workflows/domain/AbstractResult$Status;)Ljava/lang/String;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package io.github.typesafegithub.workflows.annotations
2+
3+
@RequiresOptIn
4+
public annotation class ExperimentalClientSideBindings

0 commit comments

Comments
 (0)