summaryrefslogtreecommitdiff
path: root/model/pipeline/index.ts
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2025-06-20 14:53:38 -0700
committerElizabeth Hunt <me@liz.coffee>2025-06-20 14:53:38 -0700
commitd4791f3d357634daf506fb8f91cc5332a794c421 (patch)
tree1bb01d2d4d8fa74d83bb6f99f2c8aa4146ca2d11 /model/pipeline/index.ts
parentd7e8d31c94cd713a2f4cf799e20e993acc69e361 (diff)
downloadci-d4791f3d357634daf506fb8f91cc5332a794c421.tar.gz
ci-d4791f3d357634daf506fb8f91cc5332a794c421.zip
Move to nodejs
Diffstat (limited to 'model/pipeline/index.ts')
-rw-r--r--model/pipeline/index.ts19
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';