Skip to content

Commit 33d8a79

Browse files
authored
perf(automation): generate bindings in parallel (#1193)
Implements #1191.
1 parent 77d8c4e commit 33d8a79

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

automation/code-generator/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ dependencies {
1515
implementation("io.ktor:ktor-client-cio")
1616
implementation("io.ktor:ktor-client-content-negotiation")
1717
implementation("io.ktor:ktor-serialization-kotlinx-json")
18+
implementation("io.arrow-kt:arrow-fx-coroutines:1.2.1")
1819

1920
implementation(projects.automation.typings)
2021
implementation(projects.actionBindingGenerator)

automation/code-generator/src/main/kotlin/io/github/typesafegithub/workflows/codegenerator/GenerationEntryPoint.kt

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

3+
import arrow.fx.coroutines.parMap
34
import io.github.typesafegithub.workflows.actionbindinggenerator.ActionBinding
45
import io.github.typesafegithub.workflows.actionbindinggenerator.FromLockfile
56
import io.github.typesafegithub.workflows.actionbindinggenerator.generateBinding
@@ -12,7 +13,7 @@ import java.nio.file.Paths
1213
/***
1314
* Either run this main() function or run this command: ./gradlew :code-generator:run
1415
*/
15-
fun main() {
16+
suspend fun main() {
1617
// To ensure there are no leftovers from previous generations.
1718
Paths.get("github-workflows-kt/src/gen").toFile().deleteRecursively()
1819
deleteListOfBindingsInDocs()
@@ -21,9 +22,12 @@ fun main() {
2122
generateListOfBindingsForDocs(requestsAndBindings)
2223
}
2324

24-
private fun generateBindings(): List<Pair<ActionBindingRequest, ActionBinding>> {
25+
private suspend fun generateBindings(): List<Pair<ActionBindingRequest, ActionBinding>> {
2526
val requestsAndBindings =
26-
bindingsToGenerate.map { actionBindingRequest ->
27+
bindingsToGenerate.parMap(
28+
// Not too much to not trigger some rate limiting on the GitHub side.
29+
concurrency = 10,
30+
) { actionBindingRequest ->
2731
println("Generating ${actionBindingRequest.actionCoords.prettyPrint}")
2832
val binding = actionBindingRequest.actionCoords.generateBinding(metadataRevision = FromLockfile)
2933
Pair(actionBindingRequest, binding)

0 commit comments

Comments
 (0)