gagen 0.3.2 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -45
- package/esm/artifact.d.ts +1 -1
- package/esm/artifact.d.ts.map +1 -1
- package/esm/artifact.js +1 -1
- package/esm/job.d.ts +5 -1
- package/esm/job.d.ts.map +1 -1
- package/esm/job.js +19 -3
- package/esm/mod.d.ts +9 -3
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +9 -2
- package/esm/workflow.d.ts +4 -1
- package/esm/workflow.d.ts.map +1 -1
- package/esm/workflow.js +6 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ initial code is more easily maintainable.
|
|
|
17
17
|
|
|
18
18
|
```ts
|
|
19
19
|
#!/usr/bin/env -S deno run --allow-read=ci.generated.yml --allow-write=ci.generated.yml
|
|
20
|
-
import { conditions,
|
|
20
|
+
import { conditions, step, workflow } from "gagen";
|
|
21
21
|
|
|
22
22
|
const checkout = step({
|
|
23
23
|
uses: "actions/checkout@v6",
|
|
@@ -47,7 +47,7 @@ const lint = step
|
|
|
47
47
|
);
|
|
48
48
|
|
|
49
49
|
// only specify the leaf steps — the other steps are pulled in automatically
|
|
50
|
-
|
|
50
|
+
workflow({
|
|
51
51
|
name: "ci",
|
|
52
52
|
on: ["push", "pull_request"],
|
|
53
53
|
jobs: [{
|
|
@@ -237,7 +237,7 @@ const runner = os.equals("linux").then("ubuntu-latest")
|
|
|
237
237
|
// => matrix.os == 'linux' && 'ubuntu-latest' || matrix.os == 'macos' && 'macos-latest' || 'windows-latest'
|
|
238
238
|
|
|
239
239
|
// use in job config
|
|
240
|
-
|
|
240
|
+
workflow({
|
|
241
241
|
// ...,
|
|
242
242
|
jobs: [
|
|
243
243
|
{ id: "build", runsOn: runner, steps: [test] },
|
|
@@ -262,7 +262,7 @@ const test = step.dependsOn(build).if(expr("matrix.job").equals("test"))({
|
|
|
262
262
|
});
|
|
263
263
|
|
|
264
264
|
// only test is passed — checkout and build inherit its condition
|
|
265
|
-
|
|
265
|
+
workflow({
|
|
266
266
|
...,
|
|
267
267
|
jobs: [
|
|
268
268
|
{ id: "test", runsOn: "ubuntu-latest", steps: [test] },
|
|
@@ -282,7 +282,7 @@ const bench = step.dependsOn(checkout).if(jobExpr.equals("bench"))({
|
|
|
282
282
|
run: "cargo bench",
|
|
283
283
|
});
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
workflow({
|
|
286
286
|
...,
|
|
287
287
|
jobs: [
|
|
288
288
|
{ id: "test", runsOn: "ubuntu-latest", steps: [test, bench] },
|
|
@@ -291,32 +291,13 @@ createWorkflow({
|
|
|
291
291
|
// checkout gets: if: matrix.job == 'test' || matrix.job == 'bench'
|
|
292
292
|
```
|
|
293
293
|
|
|
294
|
-
To prevent propagation, pass the unconditional steps to `steps` as well. Leaf
|
|
295
|
-
steps act as propagation barriers:
|
|
296
|
-
|
|
297
|
-
```ts
|
|
298
|
-
const build = step.dependsOn(checkout)({ run: "cargo build" });
|
|
299
|
-
const test = step.dependsOn(build)({ run: "cargo test" });
|
|
300
|
-
const linuxOnly = step.dependsOn(build, test).if(os.equals("linux"))({
|
|
301
|
-
run: "linux-specific",
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
// test is a leaf with no condition — blocks propagation to build and checkout
|
|
305
|
-
createWorkflow({
|
|
306
|
-
...,
|
|
307
|
-
jobs: [
|
|
308
|
-
{ id: "test", runsOn: "ubuntu-latest", steps: [test, linuxOnly] },
|
|
309
|
-
],
|
|
310
|
-
});
|
|
311
|
-
```
|
|
312
|
-
|
|
313
294
|
## Step outputs and job dependencies
|
|
314
295
|
|
|
315
296
|
Steps can declare outputs. When a job references another job's outputs, the
|
|
316
297
|
`needs` dependency is inferred automatically.
|
|
317
298
|
|
|
318
299
|
```ts
|
|
319
|
-
import {
|
|
300
|
+
import { job, step, workflow } from "gagen";
|
|
320
301
|
|
|
321
302
|
const checkStep = step({
|
|
322
303
|
id: "check",
|
|
@@ -334,7 +315,7 @@ const preBuild = job("pre_build", {
|
|
|
334
315
|
|
|
335
316
|
// preBuild.outputs.skip is an ExpressionValue — using it in the `if`
|
|
336
317
|
// automatically adds needs: [pre_build] to this job
|
|
337
|
-
const wf =
|
|
318
|
+
const wf = workflow({
|
|
338
319
|
name: "ci",
|
|
339
320
|
on: ["push", "pull_request"],
|
|
340
321
|
jobs: [
|
|
@@ -363,7 +344,7 @@ const integrate = step.dependsOn(buildA, buildB)({
|
|
|
363
344
|
run: "make all",
|
|
364
345
|
});
|
|
365
346
|
|
|
366
|
-
|
|
347
|
+
workflow({
|
|
367
348
|
...,
|
|
368
349
|
jobs: [
|
|
369
350
|
{ id: "ci", runsOn: "ubuntu-latest", steps: [integrate] },
|
|
@@ -390,7 +371,7 @@ const checkout = step.comesAfter(setupDeno)({ uses: "actions/checkout@v6" });
|
|
|
390
371
|
const build = step.dependsOn(checkout)({ run: "cargo build" });
|
|
391
372
|
const lint = step.dependsOn(setupDeno, checkout)({ run: "deno lint" });
|
|
392
373
|
|
|
393
|
-
|
|
374
|
+
workflow({
|
|
394
375
|
...,
|
|
395
376
|
jobs: [
|
|
396
377
|
{ id: "ci", runsOn: "ubuntu-latest", steps: [build, lint] },
|
|
@@ -411,7 +392,7 @@ Error: Cycle detected in step ordering: A → B → A
|
|
|
411
392
|
`defineMatrix()` gives you typed access to matrix values:
|
|
412
393
|
|
|
413
394
|
```ts
|
|
414
|
-
import {
|
|
395
|
+
import { workflow, defineMatrix } from "gagen";
|
|
415
396
|
|
|
416
397
|
const matrix = defineMatrix({
|
|
417
398
|
include: [
|
|
@@ -423,7 +404,7 @@ const matrix = defineMatrix({
|
|
|
423
404
|
matrix.runner; // ExpressionValue("matrix.runner") — autocompletes
|
|
424
405
|
matrix.foo; // TypeScript error — not a matrix key
|
|
425
406
|
|
|
426
|
-
|
|
407
|
+
workflow({
|
|
427
408
|
...,
|
|
428
409
|
jobs: [
|
|
429
410
|
{
|
|
@@ -466,23 +447,23 @@ const matrix = defineMatrix({
|
|
|
466
447
|
Type-safe workflow and job permissions:
|
|
467
448
|
|
|
468
449
|
```ts
|
|
469
|
-
import {
|
|
450
|
+
import { workflow } from "gagen";
|
|
470
451
|
|
|
471
|
-
const wf =
|
|
452
|
+
const wf = workflow({
|
|
472
453
|
name: "ci",
|
|
473
454
|
on: ["push", "pull_request"],
|
|
474
455
|
permissions: { contents: "read", packages: "write" },
|
|
475
456
|
});
|
|
476
457
|
|
|
477
458
|
// or use a scalar value
|
|
478
|
-
const wf2 =
|
|
459
|
+
const wf2 = workflow({
|
|
479
460
|
name: "ci",
|
|
480
461
|
on: ["push", "pull_request"],
|
|
481
462
|
permissions: "read-all",
|
|
482
463
|
});
|
|
483
464
|
|
|
484
465
|
// job-level permissions
|
|
485
|
-
|
|
466
|
+
workflow({
|
|
486
467
|
...,
|
|
487
468
|
jobs: [
|
|
488
469
|
{
|
|
@@ -504,15 +485,11 @@ Link upload and download artifact steps across jobs with automatic `needs`
|
|
|
504
485
|
inference:
|
|
505
486
|
|
|
506
487
|
```ts
|
|
507
|
-
import {
|
|
508
|
-
createWorkflow,
|
|
509
|
-
defineArtifact,
|
|
510
|
-
step,
|
|
511
|
-
} from "gagen";
|
|
488
|
+
import { artifact, step, workflow } from "gagen";
|
|
512
489
|
|
|
513
|
-
const
|
|
490
|
+
const buildOutput = artifact("build-output");
|
|
514
491
|
|
|
515
|
-
const wf =
|
|
492
|
+
const wf = workflow({
|
|
516
493
|
name: "CI",
|
|
517
494
|
on: ["push", "pull_request"],
|
|
518
495
|
jobs: [
|
|
@@ -521,7 +498,7 @@ const wf = createWorkflow({
|
|
|
521
498
|
runsOn: "ubuntu-latest",
|
|
522
499
|
steps: [
|
|
523
500
|
step({ name: "Build", run: "make build" }),
|
|
524
|
-
|
|
501
|
+
buildOutput.upload({ path: "dist/" }),
|
|
525
502
|
],
|
|
526
503
|
},
|
|
527
504
|
// `needs: [build]` is inferred automatically from the artifact link
|
|
@@ -529,7 +506,7 @@ const wf = createWorkflow({
|
|
|
529
506
|
id: "deploy",
|
|
530
507
|
runsOn: "ubuntu-latest",
|
|
531
508
|
steps: [
|
|
532
|
-
|
|
509
|
+
buildOutput.download({ dirPath: "output/" }),
|
|
533
510
|
step({
|
|
534
511
|
name: "Deploy",
|
|
535
512
|
run: "make deploy",
|
|
@@ -546,7 +523,7 @@ optional `dirPath` (the directory to download into).
|
|
|
546
523
|
The artifact version and default retention days can be configured:
|
|
547
524
|
|
|
548
525
|
```ts
|
|
549
|
-
const
|
|
526
|
+
const buildOutput = artifact("build-output", {
|
|
550
527
|
version: "v3",
|
|
551
528
|
retentionDays: 5,
|
|
552
529
|
});
|
|
@@ -562,7 +539,7 @@ const matrix = defineMatrix({
|
|
|
562
539
|
],
|
|
563
540
|
});
|
|
564
541
|
|
|
565
|
-
|
|
542
|
+
workflow({
|
|
566
543
|
...,
|
|
567
544
|
jobs: [
|
|
568
545
|
{
|
package/esm/artifact.d.ts
CHANGED
|
@@ -17,5 +17,5 @@ export declare class Artifact {
|
|
|
17
17
|
upload(config: UploadConfig): Step;
|
|
18
18
|
download(config?: DownloadConfig): Step;
|
|
19
19
|
}
|
|
20
|
-
export declare function
|
|
20
|
+
export declare function artifact(name: string, options?: ArtifactOptions): Artifact;
|
|
21
21
|
//# sourceMappingURL=artifact.d.ts.map
|
package/esm/artifact.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,QAAQ;;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAKV,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe;IAMnD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAkBlC,QAAQ,CAAC,MAAM,GAAE,cAAmB,GAAG,IAAI;CAgB5C;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,QAAQ;;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAKV,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe;IAMnD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAkBlC,QAAQ,CAAC,MAAM,GAAE,cAAmB,GAAG,IAAI;CAgB5C;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,GACxB,QAAQ,CAEV"}
|
package/esm/artifact.js
CHANGED
|
@@ -58,6 +58,6 @@ export class Artifact {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
_Artifact_version = new WeakMap(), _Artifact_retentionDays = new WeakMap(), _Artifact_uploadStep = new WeakMap();
|
|
61
|
-
export function
|
|
61
|
+
export function artifact(name, options) {
|
|
62
62
|
return new Artifact(name, options);
|
|
63
63
|
}
|
package/esm/job.d.ts
CHANGED
|
@@ -23,8 +23,12 @@ export interface ServiceContainer {
|
|
|
23
23
|
volumes?: string[];
|
|
24
24
|
options?: string;
|
|
25
25
|
}
|
|
26
|
+
export type RunsOn = string | ExpressionValue | readonly string[] | {
|
|
27
|
+
group?: string;
|
|
28
|
+
labels?: string | readonly string[];
|
|
29
|
+
};
|
|
26
30
|
export interface StepsJobConfig extends CommonJobFields {
|
|
27
|
-
runsOn:
|
|
31
|
+
runsOn: RunsOn;
|
|
28
32
|
strategy?: {
|
|
29
33
|
matrix?: unknown;
|
|
30
34
|
failFast?: boolean | ConditionLike;
|
package/esm/job.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAGhB,IAAI,EACJ,KAAK,QAAQ,EAId,MAAM,WAAW,CAAC;AAEnB,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IAChC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,EAAE,CAAC,EAAE,aAAa,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,CAAC;IACrE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAA;KAAE,CAAC;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
|
package/esm/job.js
CHANGED
|
@@ -354,9 +354,7 @@ export class Job {
|
|
|
354
354
|
return result;
|
|
355
355
|
}
|
|
356
356
|
// steps-based job
|
|
357
|
-
result["runs-on"] = config.runsOn
|
|
358
|
-
? config.runsOn.toString()
|
|
359
|
-
: config.runsOn;
|
|
357
|
+
result["runs-on"] = serializeRunsOn(config.runsOn);
|
|
360
358
|
if (config.container != null) {
|
|
361
359
|
result.container = typeof config.container === "string"
|
|
362
360
|
? config.container
|
|
@@ -951,6 +949,24 @@ function collectJobSourcesFromGraph(graph, out, stepOwners) {
|
|
|
951
949
|
}
|
|
952
950
|
}
|
|
953
951
|
}
|
|
952
|
+
function serializeRunsOn(runsOn) {
|
|
953
|
+
if (runsOn instanceof ExpressionValue) {
|
|
954
|
+
return runsOn.toString();
|
|
955
|
+
}
|
|
956
|
+
if (Array.isArray(runsOn)) {
|
|
957
|
+
return [...runsOn];
|
|
958
|
+
}
|
|
959
|
+
if (typeof runsOn === "object") {
|
|
960
|
+
const obj = runsOn;
|
|
961
|
+
const result = {};
|
|
962
|
+
if (obj.group != null)
|
|
963
|
+
result.group = obj.group;
|
|
964
|
+
if (obj.labels != null)
|
|
965
|
+
result.labels = obj.labels;
|
|
966
|
+
return result;
|
|
967
|
+
}
|
|
968
|
+
return runsOn;
|
|
969
|
+
}
|
|
954
970
|
function serializeService(svc) {
|
|
955
971
|
const result = { image: svc.image };
|
|
956
972
|
if (svc.credentials != null) {
|
package/esm/mod.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import "./_dnt.polyfills.js";
|
|
|
2
2
|
export { Step, step, StepRef } from "./step.js";
|
|
3
3
|
export type { ConditionLike, ConfigValue, StepBuilder, StepConfig, StepFunction, StepLike, } from "./step.js";
|
|
4
4
|
export { Job, job } from "./job.js";
|
|
5
|
-
export type { JobConfig, JobDef, ReusableJobConfig, ReusableJobDef, ServiceContainer, StepsJobConfig, StepsJobDef, } from "./job.js";
|
|
6
|
-
export {
|
|
5
|
+
export type { JobConfig, JobDef, ReusableJobConfig, ReusableJobDef, RunsOn, ServiceContainer, StepsJobConfig, StepsJobDef, } from "./job.js";
|
|
6
|
+
export { isLinting, Workflow, workflow } from "./workflow.js";
|
|
7
7
|
export type { WorkflowCallInput, WorkflowCallOutput, WorkflowCallSecret, WorkflowCallTrigger, WorkflowConfig, WorkflowTriggers, } from "./workflow.js";
|
|
8
8
|
export { concat, Condition, conditions, defineExprObj, ElseIfBuilder, expr, ExpressionValue, fromJSON, hashFiles, join, literal, ThenBuilder, toJSON, } from "./expression.js";
|
|
9
9
|
export type { ComparisonOp, ConcatPart, ExpressionSource, ExprMap, ExprOf, TernaryValue, } from "./expression.js";
|
|
@@ -11,6 +11,12 @@ export { formatPinComments, parsePinComments, pinYamlContent, resolveRef, unpinP
|
|
|
11
11
|
export type { PinEntry, RefResolver } from "./pin.js";
|
|
12
12
|
export { defineMatrix, Matrix } from "./matrix.js";
|
|
13
13
|
export type { PermissionLevel, Permissions, PermissionScope, } from "./permissions.js";
|
|
14
|
-
export { Artifact,
|
|
14
|
+
export { Artifact, artifact } from "./artifact.js";
|
|
15
15
|
export type { ArtifactOptions, DownloadConfig, UploadConfig, } from "./artifact.js";
|
|
16
|
+
import { workflow as workflow_ } from "./workflow.js";
|
|
17
|
+
import { artifact as artifact_ } from "./artifact.js";
|
|
18
|
+
/** @deprecated Use `workflow` instead. */
|
|
19
|
+
export declare const createWorkflow: typeof workflow_;
|
|
20
|
+
/** @deprecated Use `artifact` instead. */
|
|
21
|
+
export declare const defineArtifact: typeof artifact_;
|
|
16
22
|
//# sourceMappingURL=mod.d.ts.map
|
package/esm/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,YAAY,EACV,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,YAAY,EACV,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9D,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,MAAM,EACN,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,OAAO,EACP,WAAW,EACX,MAAM,GACP,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACV,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EACV,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AAEtD,0CAA0C;AAC1C,eAAO,MAAM,cAAc,EAAE,OAAO,SAAqB,CAAC;AAC1D,0CAA0C;AAC1C,eAAO,MAAM,cAAc,EAAE,OAAO,SAAqB,CAAC"}
|
package/esm/mod.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import "./_dnt.polyfills.js";
|
|
2
2
|
export { Step, step, StepRef } from "./step.js";
|
|
3
3
|
export { Job, job } from "./job.js";
|
|
4
|
-
export {
|
|
4
|
+
export { isLinting, Workflow, workflow } from "./workflow.js";
|
|
5
5
|
export { concat, Condition, conditions, defineExprObj, ElseIfBuilder, expr, ExpressionValue, fromJSON, hashFiles, join, literal, ThenBuilder, toJSON, } from "./expression.js";
|
|
6
6
|
export { formatPinComments, parsePinComments, pinYamlContent, resolveRef, unpinParsedYaml, } from "./pin.js";
|
|
7
7
|
export { defineMatrix, Matrix } from "./matrix.js";
|
|
8
|
-
export { Artifact,
|
|
8
|
+
export { Artifact, artifact } from "./artifact.js";
|
|
9
|
+
// deprecated re-exports
|
|
10
|
+
import { workflow as workflow_ } from "./workflow.js";
|
|
11
|
+
import { artifact as artifact_ } from "./artifact.js";
|
|
12
|
+
/** @deprecated Use `workflow` instead. */
|
|
13
|
+
export const createWorkflow = workflow_;
|
|
14
|
+
/** @deprecated Use `artifact` instead. */
|
|
15
|
+
export const defineArtifact = artifact_;
|
package/esm/workflow.d.ts
CHANGED
|
@@ -24,12 +24,15 @@ export interface WorkflowCallTrigger {
|
|
|
24
24
|
export interface WorkflowTriggers {
|
|
25
25
|
push?: {
|
|
26
26
|
branches?: string[];
|
|
27
|
+
branchesIgnore?: string[];
|
|
27
28
|
tags?: string[];
|
|
29
|
+
tagsIgnore?: string[];
|
|
28
30
|
paths?: string[];
|
|
29
31
|
pathsIgnore?: string[];
|
|
30
32
|
};
|
|
31
33
|
pull_request?: {
|
|
32
34
|
branches?: string[];
|
|
35
|
+
branchesIgnore?: string[];
|
|
33
36
|
types?: string[];
|
|
34
37
|
paths?: string[];
|
|
35
38
|
pathsIgnore?: string[];
|
|
@@ -80,5 +83,5 @@ export declare class Workflow {
|
|
|
80
83
|
export declare const isLinting: boolean;
|
|
81
84
|
/** Gets if pins should be re-resolved when using `writeOrLint` on a workflow. */
|
|
82
85
|
export declare function isUpdatingPins(): boolean;
|
|
83
|
-
export declare function
|
|
86
|
+
export declare function workflow(config: WorkflowConfig): Workflow;
|
|
84
87
|
//# sourceMappingURL=workflow.d.ts.map
|
package/esm/workflow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}
|
package/esm/workflow.js
CHANGED
|
@@ -167,7 +167,7 @@ export const isLinting = process.argv.includes("--lint");
|
|
|
167
167
|
export function isUpdatingPins() {
|
|
168
168
|
return process.argv.includes("--update-pins");
|
|
169
169
|
}
|
|
170
|
-
export function
|
|
170
|
+
export function workflow(config) {
|
|
171
171
|
return new Workflow(config);
|
|
172
172
|
}
|
|
173
173
|
// --- trigger serialization ---
|
|
@@ -176,10 +176,7 @@ function serializeTriggers(triggers) {
|
|
|
176
176
|
for (const [key, value] of Object.entries(triggers)) {
|
|
177
177
|
if (value == null)
|
|
178
178
|
continue;
|
|
179
|
-
if (
|
|
180
|
-
result["paths-ignore"] = value;
|
|
181
|
-
}
|
|
182
|
-
else if (typeof value === "object" && !Array.isArray(value)) {
|
|
179
|
+
if (typeof value === "object" && !Array.isArray(value)) {
|
|
183
180
|
result[key] = serializeTriggerObject(value);
|
|
184
181
|
}
|
|
185
182
|
else {
|
|
@@ -188,12 +185,15 @@ function serializeTriggers(triggers) {
|
|
|
188
185
|
}
|
|
189
186
|
return result;
|
|
190
187
|
}
|
|
188
|
+
function camelToKebab(key) {
|
|
189
|
+
return key.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
|
|
190
|
+
}
|
|
191
191
|
function serializeTriggerObject(obj) {
|
|
192
192
|
const result = {};
|
|
193
193
|
for (const [key, value] of Object.entries(obj)) {
|
|
194
194
|
if (value == null)
|
|
195
195
|
continue;
|
|
196
|
-
const yamlKey = key
|
|
196
|
+
const yamlKey = camelToKebab(key);
|
|
197
197
|
result[yamlKey] = value;
|
|
198
198
|
}
|
|
199
199
|
return result;
|