Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions action-binding-generator/api/action-binding-generator.api
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
public final class io/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords {
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;
public final fun component5 ()Ljava/lang/String;
public final fun component6 ()Ljava/lang/String;
public final fun component7 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;
public final fun component8 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;
public fun equals (Ljava/lang/Object;)Z
public final fun getComment ()Ljava/lang/String;
public final fun getName ()Ljava/lang/String;
public final fun getOwner ()Ljava/lang/String;
public final fun getPath ()Ljava/lang/String;
public final fun getSignificantVersion ()Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/SignificantVersion;
public final fun getTypesUuid ()Ljava/lang/String;
public final fun getVersion ()Ljava/lang/String;
public final fun getVersionForTypings ()Ljava/lang/String;
public fun hashCode ()I
Expand Down Expand Up @@ -81,6 +83,7 @@ public final class io/github/typesafegithub/workflows/actionbindinggenerator/dom

public final class io/github/typesafegithub/workflows/actionbindinggenerator/domain/TypingActualSource : java/lang/Enum {
public static final field ACTION Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/TypingActualSource;
public static final field CUSTOM Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/TypingActualSource;
public static final field TYPING_CATALOG Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/TypingActualSource;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/TypingActualSource;
Expand All @@ -107,8 +110,8 @@ public final class io/github/typesafegithub/workflows/actionbindinggenerator/gen
}

public final class io/github/typesafegithub/workflows/actionbindinggenerator/generation/GenerationKt {
public static final fun generateBinding (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/github/typesafegithub/workflows/actionbindinggenerator/metadata/Metadata;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionTypings;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public static synthetic fun generateBinding$default (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/github/typesafegithub/workflows/actionbindinggenerator/metadata/Metadata;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionTypings;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
public static final fun generateBinding (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/github/typesafegithub/workflows/actionbindinggenerator/metadata/Metadata;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionTypings;Ljava/lang/String;Ljava/lang/String;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public static synthetic fun generateBinding$default (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/github/typesafegithub/workflows/actionbindinggenerator/metadata/Metadata;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionTypings;Ljava/lang/String;Ljava/lang/String;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
}

public final class io/github/typesafegithub/workflows/actionbindinggenerator/metadata/Input {
Expand Down Expand Up @@ -181,7 +184,8 @@ public final class io/github/typesafegithub/workflows/actionbindinggenerator/met
}

public final class io/github/typesafegithub/workflows/actionbindinggenerator/metadata/MetadataReadingKt {
public static final fun fetchMetadata (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public static final fun fetchMetadata (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Ljava/lang/String;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public static synthetic fun fetchMetadata$default (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Ljava/lang/String;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
}

public final class io/github/typesafegithub/workflows/actionbindinggenerator/metadata/Output {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public data class ActionCoords(
* the typings are defined.
*/
val versionForTypings: String = version,
val typesUuid: String? = null,
)

/**
Expand All @@ -33,9 +34,15 @@ public data class ActionCoords(
*/
public val ActionCoords.isTopLevel: Boolean get() = path == null

public val ActionCoords.prettyPrint: String get() = "$prettyPrintWithoutVersion@$version"
public val ActionCoords.prettyPrint: String get() = "$prettyPrintBase@$version${typesUuid?.let {
" (types: $it)"
} ?: ""}"

public val ActionCoords.prettyPrintWithoutVersion: String get() = "$owner/$fullName${
public val ActionCoords.prettyPrintWithoutVersion: String get() = "$prettyPrintBase${typesUuid?.let {
" (types: $it)"
} ?: ""}"

private val ActionCoords.prettyPrintBase: String get() = "$owner/$fullName${
significantVersion.takeUnless { it == FULL }?.let { " with $it version" } ?: ""
}${
if ((significantVersion == COMMIT_LENIENT) && (comment != null)) " and comment '$comment'" else ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ package io.github.typesafegithub.workflows.actionbindinggenerator.domain
public enum class TypingActualSource {
ACTION,
TYPING_CATALOG,
CUSTOM,
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,20 @@ public suspend fun ActionCoords.generateBinding(
metadataRevision: MetadataRevision,
metadata: Metadata? = null,
inputTypings: ActionTypings? = null,
types: String? = null,
explicitMetadata: String? = null,
httpClient: HttpClient = HttpClient(CIO),
): List<ActionBinding> {
val metadataResolved =
metadata ?: this.fetchMetadata(metadataRevision, httpClient = httpClient) ?: return emptyList()
metadata ?: this.fetchMetadata(
metadataRevision = metadataRevision,
explicitMetadata = explicitMetadata,
httpClient = httpClient,
) ?: return emptyList()
val metadataProcessed = metadataResolved.removeDeprecatedInputsIfNameClash()

val inputTypingsResolved = inputTypings ?: this.provideTypes(metadataRevision, httpClient = httpClient)
val inputTypingsResolved =
inputTypings ?: this.provideTypes(metadataRevision, types = types, httpClient = httpClient)

val packageName = owner.toKotlinPackageName()
val className = this.buildActionClassName()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,13 @@ private fun ActionCoords.actionYamlUrl(gitRef: String) =

public suspend fun ActionCoords.fetchMetadata(
metadataRevision: MetadataRevision,
explicitMetadata: String? = null,
httpClient: HttpClient,
): Metadata? {
if (explicitMetadata != null) {
return yaml.decodeFromString(explicitMetadata)
}

val gitRef =
when (metadataRevision) {
is CommitHash -> metadataRevision.value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import io.github.typesafegithub.workflows.actionbindinggenerator.domain.Metadata
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.NewestForVersion
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource.ACTION
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource.CUSTOM
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource.TYPING_CATALOG
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.subName
import io.github.typesafegithub.workflows.actionbindinggenerator.utils.toPascalCase
Expand All @@ -26,11 +27,13 @@ private val logger = logger { }

internal suspend fun ActionCoords.provideTypes(
metadataRevision: MetadataRevision,
types: String? = null,
httpClient: HttpClient,
): ActionTypings =
(
this.fetchTypingMetadata(metadataRevision, httpClient)
?: this.toMajorVersionForTypings().fetchFromTypingsFromCatalog(httpClient)
customTypingMetadata(types)
?: this.fetchTypingMetadata(metadataRevision, httpClient)
?: this.toMajorVersionForTypings().fetchTypingsFromCatalog(httpClient)
)?.let { (typings, typingActualSource) ->
ActionTypings(
inputTypings = typings.toTypesMap(),
Expand All @@ -53,6 +56,9 @@ private fun ActionCoords.actionTypesFromCatalog() =

private fun ActionCoords.catalogMetadata() = "$CATALOG_BASE_URL/${owner.lowercase()}/${name.lowercase()}/metadata.yml"

private fun customTypingMetadata(types: String? = null) =
types?.let { Pair(yaml.decodeFromStringOrDefaultIfEmpty(it, ActionTypes()), CUSTOM) }

private suspend fun ActionCoords.fetchTypingMetadata(
metadataRevision: MetadataRevision,
httpClient: HttpClient,
Expand Down Expand Up @@ -86,7 +92,7 @@ private suspend fun ActionCoords.fetchTypingMetadata(
return Pair(yaml.decodeFromStringOrDefaultIfEmpty(typesMetadataYaml, ActionTypes()), ACTION)
}

private suspend fun ActionCoords.fetchFromTypingsFromCatalog(
private suspend fun ActionCoords.fetchTypingsFromCatalog(
httpClient: HttpClient,
): Pair<ActionTypes, TypingActualSource>? =
(
Expand Down
Loading
Loading