Implement handling of new filters in typescript converter

This commit is contained in:
Lawrence Gripper
2025-09-25 08:46:57 +00:00
committed by GitHub
parent 300c0dc569
commit fcc72a8d97
5 changed files with 31 additions and 4 deletions
@@ -7,10 +7,12 @@ import {TokenType} from "../../templates/tokens/types";
import {
BranchFilterConfig,
EventsConfig,
NamesFilterConfig,
PathFilterConfig,
ScheduleConfig,
TagFilterConfig,
TypesFilterConfig,
VersionsFilterConfig,
WorkflowFilterConfig
} from "../workflow-template";
import {isValidCron} from "./cron";
@@ -76,10 +78,11 @@ export function convertOn(context: TemplateContext, token: TemplateToken): Event
...convertPatternFilter("tags", eventToken),
...convertPatternFilter("paths", eventToken),
...convertFilter("types", eventToken),
...convertFilter("versions", eventToken),
...convertFilter("names", eventToken),
...convertFilter("workflows", eventToken)
};
}
return result;
}
@@ -121,8 +124,8 @@ function convertPatternFilter<T extends BranchFilterConfig & TagFilterConfig & P
return result;
}
function convertFilter<T extends TypesFilterConfig & WorkflowFilterConfig>(
name: "types" | "workflows",
function convertFilter<T extends TypesFilterConfig & WorkflowFilterConfig & VersionsFilterConfig & NamesFilterConfig>(
name: "types" | "workflows" | "versions" | "names",
token: MappingToken
): T {
const result = {} as T;
@@ -129,6 +129,7 @@ export type EventsConfig = {
repository_dispatch?: TypesFilterConfig;
release?: TypesFilterConfig;
watch?: TypesFilterConfig;
image_versions?: TypesFilterConfig & VersionsFilterConfig & NamesFilterConfig;
// Index signature to allow easier lookup
[eventName: string]: unknown;
@@ -138,6 +139,14 @@ export type TypesFilterConfig = {
types?: string[];
};
export type VersionsFilterConfig = {
versions?: string[];
};
export type NamesFilterConfig = {
names?: string[];
};
export type BranchFilterConfig = {
branches?: string[];
"branches-ignore"?: string[];
@@ -15,7 +15,14 @@ jobs:
---
{
"events": {
"image_version": {}
"image_version": {
"versions": [
"1.*"
],
"names": [
"testing"
]
}
},
"jobs": [
{
@@ -21,6 +21,10 @@ jobs:
"image_version": {
"types": [
"ready"
],
"names": [
"one",
"two"
]
}
},
@@ -21,6 +21,10 @@ jobs:
"image_version": {
"types": [
"ready"
],
"versions": [
"1.0.0",
"1.0.1"
]
}
},