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 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, createWorkflow, step } from "gagen";
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
- createWorkflow({
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
- createWorkflow({
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
- createWorkflow({
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
- createWorkflow({
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 { createWorkflow, job, step } from "gagen";
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 = createWorkflow({
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
- createWorkflow({
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
- createWorkflow({
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 { createWorkflow, defineMatrix } from "gagen";
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
- createWorkflow({
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 { createWorkflow } from "gagen";
450
+ import { workflow } from "gagen";
470
451
 
471
- const wf = createWorkflow({
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 = createWorkflow({
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
- createWorkflow({
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 artifact = defineArtifact("build-output");
490
+ const buildOutput = artifact("build-output");
514
491
 
515
- const wf = createWorkflow({
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
- artifact.upload({ path: "dist/" }),
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
- artifact.download({ dirPath: "output/" }),
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 artifact = defineArtifact("build-output", {
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
- createWorkflow({
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 defineArtifact(name: string, options?: ArtifactOptions): Artifact;
20
+ export declare function artifact(name: string, options?: ArtifactOptions): Artifact;
21
21
  //# sourceMappingURL=artifact.d.ts.map
@@ -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,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,GACxB,QAAQ,CAEV"}
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 defineArtifact(name, options) {
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: string | ExpressionValue;
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":"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"}
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 instanceof ExpressionValue
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 { createWorkflow, isLinting, Workflow } from "./workflow.js";
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, defineArtifact } from "./artifact.js";
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,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpE,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,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EACV,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC"}
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 { createWorkflow, isLinting, Workflow } from "./workflow.js";
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, defineArtifact } from "./artifact.js";
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 createWorkflow(config: WorkflowConfig): Workflow;
86
+ export declare function workflow(config: WorkflowConfig): Workflow;
84
87
  //# sourceMappingURL=workflow.d.ts.map
@@ -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 createWorkflow(config) {
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 (key === "pathsIgnore") {
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 === "pathsIgnore" ? "paths-ignore" : key;
196
+ const yamlKey = camelToKebab(key);
197
197
  result[yamlKey] = value;
198
198
  }
199
199
  return result;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gagen",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "Generate complex GitHub Actions YAML files using a declarative API.",
5
5
  "repository": {
6
6
  "type": "git",