diff --git a/packages/catalog-model/src/kinds/TemplateEntityV1beta2.test.ts b/packages/catalog-model/src/kinds/TemplateEntityV1beta2.test.ts index 458bdcd0aa..2571cc947e 100644 --- a/packages/catalog-model/src/kinds/TemplateEntityV1beta2.test.ts +++ b/packages/catalog-model/src/kinds/TemplateEntityV1beta2.test.ts @@ -54,6 +54,7 @@ describe('templateEntityV1beta2Validator', () => { input: { url: './template', }, + if: '{{ parameters.owner }}', }, ], output: { @@ -122,16 +123,29 @@ describe('templateEntityV1beta2Validator', () => { delete (entity as any).spec.steps[0].action; await expect(validator.check(entity)).rejects.toThrow(/action/); }); + it('accepts missing owner', async () => { delete (entity as any).spec.owner; await expect(validator.check(entity)).resolves.toBe(true); }); + it('rejects empty owner', async () => { (entity as any).spec.owner = ''; await expect(validator.check(entity)).rejects.toThrow(/owner/); }); + it('rejects wrong type owner', async () => { (entity as any).spec.owner = 5; await expect(validator.check(entity)).rejects.toThrow(/owner/); }); + + it('accepts missing if', async () => { + delete (entity as any).spec.if; + await expect(validator.check(entity)).resolves.toBe(true); + }); + + it('accepts boolean in if', async () => { + (entity as any).spec.if = true; + await expect(validator.check(entity)).resolves.toBe(true); + }); }); diff --git a/packages/catalog-model/src/kinds/TemplateEntityV1beta2.ts b/packages/catalog-model/src/kinds/TemplateEntityV1beta2.ts index 98b953c9e0..6ee6fcb1f1 100644 --- a/packages/catalog-model/src/kinds/TemplateEntityV1beta2.ts +++ b/packages/catalog-model/src/kinds/TemplateEntityV1beta2.ts @@ -33,6 +33,7 @@ export interface TemplateEntityV1beta2 extends Entity { name?: string; action: string; input?: JsonObject; + if?: string | boolean; }>; output?: { [name: string]: string }; owner?: string; diff --git a/packages/catalog-model/src/schema/kinds/Template.v1beta2.schema.json b/packages/catalog-model/src/schema/kinds/Template.v1beta2.schema.json index af253549f0..0bf8522fa4 100644 --- a/packages/catalog-model/src/schema/kinds/Template.v1beta2.schema.json +++ b/packages/catalog-model/src/schema/kinds/Template.v1beta2.schema.json @@ -45,7 +45,8 @@ "action": "publish:github", "parameters": { "repoUrl": "{{ parameters.repoUrl }}" - } + }, + "if": "{{ parameters.repoUrl }}" } ], "output": { @@ -128,6 +129,10 @@ "input": { "type": "object", "description": "A templated object describing the inputs to the action." + }, + "if": { + "type": ["string", "boolean"], + "description": "A templated condition that skips the step when evaluated to false. If the condition is true or not defined, the step is executed." } } }