summaryrefslogtreecommitdiff
path: root/model/pipeline/index.ts
blob: adf902bb2fe0ba15710a19305e38d9386c3245f5 (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 '../job';

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';
export * from './impl';