diff options
Diffstat (limited to 'model/pipeline/index.ts')
-rw-r--r-- | model/pipeline/index.ts | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/model/pipeline/index.ts b/model/pipeline/index.ts new file mode 100644 index 0000000..adf902b --- /dev/null +++ b/model/pipeline/index.ts @@ -0,0 +1,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'; |