Skip to content

Commit

Permalink
feat!: mark client-side bindings as experimental (#1211)
Browse files Browse the repository at this point in the history
Fixes #1207.
  • Loading branch information
krzema12 committed Dec 26, 2023
1 parent 9127914 commit 1b84a3e
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 0 deletions.
3 changes: 3 additions & 0 deletions action-binding-generator/api/action-binding-generator.api
Original file line number Diff line number Diff line change
Expand Up @@ -192,3 +192,6 @@ public final class io/github/typesafegithub/workflows/actionbindinggenerator/Typ
public static fun values ()[Lio/github/typesafegithub/workflows/actionbindinggenerator/TypingActualSource;
}

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

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.typesafegithub.workflows.actionbindinggenerator

import io.github.typesafegithub.workflows.actionbindinggenerator.annotations.ExperimentalClientSideBindings
import io.github.typesafegithub.workflows.shared.internal.findGitRoot
import java.nio.file.Path
import kotlin.io.path.div
Expand All @@ -13,6 +14,7 @@ import kotlin.io.path.div
* @param sourceFile Path to the script where this function is called from. Typically a result of an expression like
* [__FILE__.toPath()].
*/
@ExperimentalClientSideBindings
public fun generateActionBindings(
args: Array<String>,
sourceFile: Path,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,11 @@ private fun generateActionClass(
): TypeSpec {
return TypeSpec.classBuilder(className)
.addModifiers(KModifier.DATA)
.apply {
if (generateForScript) {
addExperimentalAnnotation()
}
}
.addKdoc(actionKdoc(metadata, coords))
.addMaybeDeprecated(coords)
.inheritsFromRegularAction(coords, metadata, className, generateForScript = generateForScript)
Expand All @@ -156,6 +161,13 @@ private fun generateActionClass(
.build()
}

private fun TypeSpec.Builder.addExperimentalAnnotation() {
addAnnotation(
AnnotationSpec.builder(ClassName("io.github.typesafegithub.workflows.annotations", "ExperimentalClientSideBindings"))
.build(),
)
}

private fun TypeSpec.Builder.addCustomTypes(
typings: Map<String, Typing>,
coords: ActionCoords,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package io.github.typesafegithub.workflows.actionbindinggenerator.annotations

@RequiresOptIn
public annotation class ExperimentalClientSideBindings
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package io.github.typesafegithub.workflows.actionbindinggenerator

import io.github.typesafegithub.workflows.actionbindinggenerator.annotations.ExperimentalClientSideBindings
import io.kotest.core.spec.style.FunSpec
import io.kotest.engine.spec.tempdir
import io.kotest.matchers.shouldBe

@OptIn(ExperimentalClientSideBindings::class)
class GenerateActionBindingsCliHelperTest : FunSpec({
test("${::generateActionBindings.name} - smoke test") {
// given
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,7 @@ class GenerationTest : FunSpec({
"DEPRECATION",
)
import io.github.typesafegithub.workflows.annotations.ExperimentalClientSideBindings
import io.github.typesafegithub.workflows.domain.actions.Action
import io.github.typesafegithub.workflows.domain.actions.RegularAction
import java.util.LinkedHashMap
Expand All @@ -455,6 +456,7 @@ class GenerationTest : FunSpec({
*
* [Action on GitHub](https://github.com/john-smith/action-for-script)
*/
@ExperimentalClientSideBindings
public data class ActionForScript private constructor(
/**
* Short description
Expand Down
3 changes: 3 additions & 0 deletions github-workflows-kt/api/github-workflows-kt.api
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
public abstract interface annotation class io/github/typesafegithub/workflows/annotations/ExperimentalClientSideBindings : java/lang/annotation/Annotation {
}

public abstract class io/github/typesafegithub/workflows/domain/AbstractResult {
public final fun eq (Lio/github/typesafegithub/workflows/domain/AbstractResult$Status;)Ljava/lang/String;
public final fun neq (Lio/github/typesafegithub/workflows/domain/AbstractResult$Status;)Ljava/lang/String;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package io.github.typesafegithub.workflows.annotations

@RequiresOptIn
public annotation class ExperimentalClientSideBindings

0 comments on commit 1b84a3e

Please sign in to comment.