summaryrefslogtreecommitdiff
path: root/model/pipeline/index.ts
blob: 1c10c643f0eaa8c4c86c22701f3e6520e5900aed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import { isObject } from '@emprespresso/pengueno';
import { isJob, Job } from '@emprespresso/ci_model';

export interface PipelineStage {
    readonly parallelJobs: Array<Job>;
}
export const isPipelineStage = (t: unknown): t is PipelineStage =>
    isObject(t) && 'parallelJobs' in t && Array.isArray(t.parallelJobs) && t.parallelJobs.every((j) => isJob(j));

export const isPipeline = (t: unknown): t is Pipeline =>
    isObject(t) && 'serialJobs' in t && Array.isArray(t.serialJobs) && t.serialJobs.every((p) => isPipelineStage(p));

export interface Pipeline {
    readonly serialJobs: Array<PipelineStage>;
    serialize(): string;
}

export * from './builder.js';
export * from './impl.js';