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());