From 41b8fa92310f554083fc348755263e63c180532d Mon Sep 17 00:00:00 2001 From: Felipe Suero Date: Wed, 5 Apr 2023 13:01:18 -0400 Subject: [PATCH] Create alternate logic branch for workflow-call --- workflow-parser/src/model/converter/events.ts | 37 +++++++++---------- .../src/model/converter/workflow-call.ts | 5 +-- .../src/model/workflow-template.ts | 2 +- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/workflow-parser/src/model/converter/events.ts b/workflow-parser/src/model/converter/events.ts index 8569f0e..2d4ba2d 100644 --- a/workflow-parser/src/model/converter/events.ts +++ b/workflow-parser/src/model/converter/events.ts @@ -59,29 +59,26 @@ export function convertOn(context: TemplateContext, token: TemplateToken): Event // All other events are defined as mappings. During schema validation we already ensure that events // receive only known keys, so here we can focus on the values and whether they are valid. + const eventToken = item.value.assertMapping(`event ${eventName}`); - if(eventName === "workflow_call") { - result[eventName] = { - ...convertPatternFilter("branches", eventToken), - ...convertPatternFilter("tags", eventToken), - ...convertPatternFilter("paths", eventToken), - ...convertFilter("types", eventToken), - ...convertFilter("workflows", eventToken), - ...convertEventWorkflowCall(context, eventToken) - }; - }else{ - result[eventName] = { - ...convertPatternFilter("branches", eventToken), - ...convertPatternFilter("tags", eventToken), - ...convertPatternFilter("paths", eventToken), - ...convertFilter("types", eventToken), - ...convertFilter("workflows", eventToken), - ...convertEventWorkflowDispatchInputs(context, eventToken), - }; + if (eventName === "workflow_call") { + result.workflow_call = convertEventWorkflowCall(context, eventToken); + continue; } + + if (eventName === "workflow_dispatch") { + result.workflow_dispatch = convertEventWorkflowDispatchInputs(context, eventToken); + continue; + } + + result[eventName] = { + ...convertPatternFilter("branches", eventToken), + ...convertPatternFilter("tags", eventToken), + ...convertPatternFilter("paths", eventToken), + ...convertFilter("types", eventToken), + ...convertFilter("workflows", eventToken) + }; } - - return result; } diff --git a/workflow-parser/src/model/converter/workflow-call.ts b/workflow-parser/src/model/converter/workflow-call.ts index 0da7faf..bf204ea 100644 --- a/workflow-parser/src/model/converter/workflow-call.ts +++ b/workflow-parser/src/model/converter/workflow-call.ts @@ -1,7 +1,7 @@ import {TemplateContext} from "../../templates/template-context"; import {MappingToken, TemplateToken} from "../../templates/tokens"; import {isMapping} from "../../templates/tokens/type-guards"; -import {SecretConfig, WorkflowCallConfig, InputConfig,InputType} from "../workflow-template"; +import {SecretConfig, WorkflowCallConfig, InputConfig, InputType} from "../workflow-template"; import {convertStringList} from "./string-list"; import {ScalarToken} from "../../templates/tokens/scalar-token"; @@ -29,7 +29,6 @@ export function convertEventWorkflowCall(context: TemplateContext, token: Mappin return result; } - export function convertWorkflowInputs( context: TemplateContext, token: MappingToken @@ -85,7 +84,7 @@ export function convertWorkflowInput(context: TemplateContext, token: MappingTok } // Validate default value - if (defaultValue !== undefined) { + if (defaultValue !== undefined && !defaultValue.isExpression) { try { switch (result.type) { case InputType.boolean: diff --git a/workflow-parser/src/model/workflow-template.ts b/workflow-parser/src/model/workflow-template.ts index ff3d172..d50fea9 100644 --- a/workflow-parser/src/model/workflow-template.ts +++ b/workflow-parser/src/model/workflow-template.ts @@ -158,7 +158,7 @@ export type WorkflowDispatchConfig = { }; export type WorkflowCallConfig = { - inputs?: {[inputName: string]: InputConfig}; + inputs?: {[inputName: string]: InputConfig & {default?: string | boolean | number | ScalarToken}}; secrets?: {[secretName: string]: SecretConfig}; // TODO - these are supported in C# and Go but not in TS yet // outputs: { [outputName: string]: OutputConfig }