import type { IPipeline, IStage, IStageOrTriggerTypeConfig, IStageOrTriggerValidator, IValidatorConfig, } from '@spinnaker/core'; import { PipelineConfigValidator } from '@spinnaker/core'; export interface IStageWithManifestSelector extends IStage { manifestName: string; location: string; } export class ManifestSelectorValidator implements IStageOrTriggerValidator { public validate( _pipeline: IPipeline, stage: IStageWithManifestSelector, _validator: IValidatorConfig, _config: IStageOrTriggerTypeConfig, ): string { const [kind, name] = (stage.manifestName || '').split(' '); if (!name && !kind) { return `Name and Kind are required fields.`; } if (!name) { return `Name is a required field.`; } if (!kind) { return `Kind is a required field.`; } return null; } } PipelineConfigValidator.registerValidator('manifestSelector', new ManifestSelectorValidator());