Skip to content

Commit 1c97516

Browse files
authored
feat(dsl): allow adding extra steps in consistency check job (#1414)
Part of #1398. Thanks to this, it will be possible to e. g. run logic for finding action updates, or create end-to-end tests for this library by adding publishing to Maven local.
1 parent 9579175 commit 1c97516

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

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

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -484,11 +484,12 @@ public abstract interface class io/github/typesafegithub/workflows/domain/WithOu
484484
}
485485

486486
public final class io/github/typesafegithub/workflows/domain/Workflow : io/github/typesafegithub/workflows/dsl/HasCustomArguments {
487-
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;)V
488-
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
487+
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Lkotlin/jvm/functions/Function1;Ljava/util/List;Ljava/util/Map;)V
488+
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Lkotlin/jvm/functions/Function1;Ljava/util/List;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
489489
public final fun component1 ()Ljava/lang/String;
490-
public final fun component10 ()Ljava/util/List;
491-
public final fun component11 ()Ljava/util/Map;
490+
public final fun component10 ()Lkotlin/jvm/functions/Function1;
491+
public final fun component11 ()Ljava/util/List;
492+
public final fun component12 ()Ljava/util/Map;
492493
public final fun component2 ()Ljava/util/List;
493494
public final fun component3 ()Ljava/util/LinkedHashMap;
494495
public final fun component4 ()Ljava/nio/file/Path;
@@ -497,8 +498,8 @@ public final class io/github/typesafegithub/workflows/domain/Workflow : io/githu
497498
public final fun component7 ()Ljava/util/Map;
498499
public final fun component8 ()Ljava/lang/String;
499500
public final fun component9 ()Ljava/util/LinkedHashMap;
500-
public final fun copy (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;)Lio/github/typesafegithub/workflows/domain/Workflow;
501-
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/domain/Workflow;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Workflow;
501+
public final fun copy (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Lkotlin/jvm/functions/Function1;Ljava/util/List;Ljava/util/Map;)Lio/github/typesafegithub/workflows/domain/Workflow;
502+
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/domain/Workflow;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Lkotlin/jvm/functions/Function1;Ljava/util/List;Ljava/util/Map;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Workflow;
502503
public fun equals (Ljava/lang/Object;)Z
503504
public final fun getConcurrency ()Lio/github/typesafegithub/workflows/domain/Concurrency;
504505
public final fun getEnv ()Ljava/util/LinkedHashMap;
@@ -508,6 +509,7 @@ public final class io/github/typesafegithub/workflows/domain/Workflow : io/githu
508509
public final fun getPermissions ()Ljava/util/Map;
509510
public final fun getSourceFile ()Ljava/nio/file/Path;
510511
public final fun getTargetFileName ()Ljava/lang/String;
512+
public final fun getYamlConsistencyJobAdditionalSteps ()Lkotlin/jvm/functions/Function1;
511513
public final fun getYamlConsistencyJobCondition ()Ljava/lang/String;
512514
public final fun getYamlConsistencyJobEnv ()Ljava/util/LinkedHashMap;
513515
public fun get_customArguments ()Ljava/util/Map;
@@ -1895,8 +1897,8 @@ public final class io/github/typesafegithub/workflows/dsl/JobBuilder : io/github
18951897
}
18961898

18971899
public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilder {
1898-
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)V
1899-
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
1900+
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Lkotlin/jvm/functions/Function1;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)V
1901+
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Lkotlin/jvm/functions/Function1;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
19001902
public final fun build ()Lio/github/typesafegithub/workflows/domain/Workflow;
19011903
public final fun job ([Lkotlin/Unit;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Lio/github/typesafegithub/workflows/domain/Environment;Ljava/util/Map;Lio/github/typesafegithub/workflows/domain/JobOutputs;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Job;
19021904
public final fun job ([Lkotlin/Unit;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Lio/github/typesafegithub/workflows/domain/Environment;Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Job;
@@ -1906,8 +1908,8 @@ public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilder {
19061908

19071909
public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilderKt {
19081910
public static final fun toBuilder (Lio/github/typesafegithub/workflows/domain/Workflow;)Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;
1909-
public static final fun workflow ([Lkotlin/Unit;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Workflow;
1910-
public static synthetic fun workflow$default ([Lkotlin/Unit;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Workflow;
1911+
public static final fun workflow ([Lkotlin/Unit;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Lkotlin/jvm/functions/Function1;Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Workflow;
1912+
public static synthetic fun workflow$default ([Lkotlin/Unit;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Lkotlin/jvm/functions/Function1;Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Workflow;
19111913
}
19121914

19131915
public final class io/github/typesafegithub/workflows/dsl/expressions/Contexts : io/github/typesafegithub/workflows/dsl/expressions/contexts/FunctionsContext {

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

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

33
import io.github.typesafegithub.workflows.domain.triggers.Trigger
44
import io.github.typesafegithub.workflows.dsl.HasCustomArguments
5+
import io.github.typesafegithub.workflows.dsl.JobBuilder
56
import kotlinx.serialization.Contextual
67
import java.nio.file.Path
78

@@ -15,6 +16,7 @@ public data class Workflow(
1516
val permissions: Map<Permission, Mode>? = null,
1617
val yamlConsistencyJobCondition: String? = null,
1718
val yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
19+
val yamlConsistencyJobAdditionalSteps: (JobBuilder<JobOutputs.EMPTY>.() -> Unit)? = null,
1820
val jobs: List<Job<*>>,
1921
override val _customArguments: Map<String, @Contextual Any?> = mapOf(),
2022
) : HasCustomArguments

github-workflows-kt/src/main/kotlin/io/github/typesafegithub/workflows/dsl/WorkflowBuilder.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class WorkflowBuilder(
2424
concurrency: Concurrency? = null,
2525
yamlConsistencyJobCondition: String? = null,
2626
yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
27+
yamlConsistencyJobAdditionalSteps: (JobBuilder<JobOutputs.EMPTY>.() -> Unit)? = null,
2728
jobs: List<Job<*>> = emptyList(),
2829
permissions: Map<Permission, Mode>? = null,
2930
_customArguments: Map<String, @Contextual Any?>,
@@ -40,6 +41,7 @@ public class WorkflowBuilder(
4041
concurrency = concurrency,
4142
yamlConsistencyJobCondition = yamlConsistencyJobCondition,
4243
yamlConsistencyJobEnv = yamlConsistencyJobEnv,
44+
yamlConsistencyJobAdditionalSteps = yamlConsistencyJobAdditionalSteps,
4345
_customArguments = _customArguments,
4446
)
4547

@@ -167,6 +169,7 @@ public fun workflow(
167169
concurrency: Concurrency? = null,
168170
yamlConsistencyJobCondition: String? = null,
169171
yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
172+
yamlConsistencyJobAdditionalSteps: (JobBuilder<JobOutputs.EMPTY>.() -> Unit)? = null,
170173
permissions: Map<Permission, Mode>? = null,
171174
_customArguments: Map<String, @Contextual Any> = mapOf(),
172175
block: WorkflowBuilder.() -> Unit,
@@ -186,6 +189,7 @@ public fun workflow(
186189
concurrency = concurrency,
187190
yamlConsistencyJobCondition = yamlConsistencyJobCondition,
188191
yamlConsistencyJobEnv = yamlConsistencyJobEnv,
192+
yamlConsistencyJobAdditionalSteps = yamlConsistencyJobAdditionalSteps,
189193
_customArguments = _customArguments,
190194
)
191195
workflowBuilder.block()

github-workflows-kt/src/main/kotlin/io/github/typesafegithub/workflows/yaml/ToYaml.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ private fun Workflow.generateYaml(
170170
) {
171171
uses(name = "Check out", action = CheckoutV4())
172172

173+
yamlConsistencyJobAdditionalSteps?.also { block ->
174+
block()
175+
}
176+
173177
if (generateActionBindings &&
174178
sourceFile.parent?.resolve(GENERATE_ACTION_BINDINGS_SCRIPT_NAME)?.exists() == true
175179
) {

0 commit comments

Comments
 (0)