Skip to content

Commit fc09300

Browse files
authored
feat(dsl): allow setting output in Kotlin-based step (#1409)
Exposes a Kotlin API for setting step outputs like this: `outputs["some-output"] = "foobar"`, accessible so far only via e.g. `${{ steps.step-id.outputs.some-output }}`.
1 parent 0aa280d commit fc09300

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,7 @@ public final class io/github/typesafegithub/workflows/domain/contexts/Contexts {
607607
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/domain/contexts/Contexts;Lio/github/typesafegithub/workflows/domain/contexts/GithubContext;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/contexts/Contexts;
608608
public fun equals (Ljava/lang/Object;)Z
609609
public final fun getGithub ()Lio/github/typesafegithub/workflows/domain/contexts/GithubContext;
610+
public final fun getOutputs ()Lio/github/typesafegithub/workflows/domain/contexts/OutputsContext;
610611
public fun hashCode ()I
611612
public fun toString ()Ljava/lang/String;
612613
}
@@ -674,6 +675,11 @@ public final class io/github/typesafegithub/workflows/domain/contexts/GithubCont
674675
public final fun serializer ()Lkotlinx/serialization/KSerializer;
675676
}
676677

678+
public final class io/github/typesafegithub/workflows/domain/contexts/OutputsContext {
679+
public static final field INSTANCE Lio/github/typesafegithub/workflows/domain/contexts/OutputsContext;
680+
public final fun set (Ljava/lang/String;Ljava/lang/String;)V
681+
}
682+
677683
public final class io/github/typesafegithub/workflows/domain/triggers/BranchProtectionRule : io/github/typesafegithub/workflows/domain/triggers/Trigger {
678684
public static final field Companion Lio/github/typesafegithub/workflows/domain/triggers/BranchProtectionRule$Companion;
679685
public fun <init> ()V

github-workflows-kt/src/main/kotlin/io/github/typesafegithub/workflows/domain/contexts/Contexts.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@ package io.github.typesafegithub.workflows.domain.contexts
22

33
public data class Contexts(
44
val github: GithubContext,
5-
)
5+
) {
6+
val outputs: OutputsContext = OutputsContext
7+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.github.typesafegithub.workflows.domain.contexts
2+
3+
import java.io.File
4+
5+
public object OutputsContext {
6+
public operator fun set(
7+
outputName: String,
8+
value: String,
9+
) {
10+
File(System.getenv("GITHUB_OUTPUT")).appendText("$outputName=$value")
11+
}
12+
}

0 commit comments

Comments
 (0)