pipecraft 0.29.3 → 0.36.2
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 +98 -34
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +66 -24
- package/dist/cli/index.js.map +1 -1
- package/dist/generators/init.tpl.d.ts +4 -4
- package/dist/generators/init.tpl.d.ts.map +1 -1
- package/dist/generators/init.tpl.js +310 -83
- package/dist/generators/init.tpl.js.map +1 -1
- package/dist/generators/workflows.tpl.d.ts +9 -9
- package/dist/generators/workflows.tpl.d.ts.map +1 -1
- package/dist/generators/workflows.tpl.js +33 -24
- package/dist/generators/workflows.tpl.js.map +1 -1
- package/dist/templates/actions/calculate-version.yml.tpl.d.ts +7 -4
- package/dist/templates/actions/calculate-version.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/calculate-version.yml.tpl.js +16 -9
- package/dist/templates/actions/calculate-version.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-pr.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/create-pr.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-pr.yml.tpl.js +9 -6
- package/dist/templates/actions/create-pr.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-release.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/create-release.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-release.yml.tpl.js +9 -6
- package/dist/templates/actions/create-release.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-tag.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/create-tag.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-tag.yml.tpl.js +9 -6
- package/dist/templates/actions/create-tag.yml.tpl.js.map +1 -1
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts +24 -52
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/detect-changes.yml.tpl.js +281 -108
- package/dist/templates/actions/detect-changes.yml.tpl.js.map +1 -1
- package/dist/templates/actions/manage-branch.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/manage-branch.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/manage-branch.yml.tpl.js +9 -6
- package/dist/templates/actions/manage-branch.yml.tpl.js.map +1 -1
- package/dist/templates/actions/promote-branch.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/promote-branch.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/promote-branch.yml.tpl.js +27 -76
- package/dist/templates/actions/promote-branch.yml.tpl.js.map +1 -1
- package/dist/templates/actions/run-nx-affected.yml.tpl.d.ts +33 -0
- package/dist/templates/actions/run-nx-affected.yml.tpl.d.ts.map +1 -0
- package/dist/templates/actions/run-nx-affected.yml.tpl.js +346 -0
- package/dist/templates/actions/run-nx-affected.yml.tpl.js.map +1 -0
- package/dist/templates/release-it.cjs.tpl.d.ts +1 -1
- package/dist/templates/release-it.cjs.tpl.d.ts.map +1 -1
- package/dist/templates/release-it.cjs.tpl.js +24 -26
- package/dist/templates/release-it.cjs.tpl.js.map +1 -1
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts +1 -1
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.js +2 -3
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts +2 -2
- package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js +300 -93
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/pipeline.yml.tpl.d.ts +2 -2
- package/dist/templates/workflows/pipeline.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/pipeline.yml.tpl.js +347 -74
- package/dist/templates/workflows/pipeline.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts +1 -1
- package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/pr-title-check.yml.tpl.js +101 -22
- package/dist/templates/workflows/pr-title-check.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/shared/index.d.ts +3 -2
- package/dist/templates/workflows/shared/index.d.ts.map +1 -1
- package/dist/templates/workflows/shared/index.js +3 -2
- package/dist/templates/workflows/shared/index.js.map +1 -1
- package/dist/templates/workflows/shared/operations-changes.d.ts +13 -2
- package/dist/templates/workflows/shared/operations-changes.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-changes.js +47 -16
- package/dist/templates/workflows/shared/operations-changes.js.map +1 -1
- package/dist/templates/workflows/shared/operations-domain-jobs.d.ts +18 -1
- package/dist/templates/workflows/shared/operations-domain-jobs.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-domain-jobs.js +142 -17
- package/dist/templates/workflows/shared/operations-domain-jobs.js.map +1 -1
- package/dist/templates/workflows/shared/operations-gate.d.ts +32 -0
- package/dist/templates/workflows/shared/operations-gate.d.ts.map +1 -0
- package/dist/templates/workflows/shared/operations-gate.js +77 -0
- package/dist/templates/workflows/shared/operations-gate.js.map +1 -0
- package/dist/templates/workflows/shared/operations-header.d.ts +1 -1
- package/dist/templates/workflows/shared/operations-header.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-header.js +46 -6
- package/dist/templates/workflows/shared/operations-header.js.map +1 -1
- package/dist/templates/workflows/shared/operations-tag-promote.d.ts +5 -1
- package/dist/templates/workflows/shared/operations-tag-promote.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-tag-promote.js +138 -31
- package/dist/templates/workflows/shared/operations-tag-promote.js.map +1 -1
- package/dist/templates/workflows/shared/operations-version.d.ts +3 -1
- package/dist/templates/workflows/shared/operations-version.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-version.js +18 -10
- package/dist/templates/workflows/shared/operations-version.js.map +1 -1
- package/dist/templates/yaml-format-utils.d.ts.map +1 -1
- package/dist/templates/yaml-format-utils.js.map +1 -1
- package/dist/types/index.d.ts +57 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/action-reference.d.ts +73 -0
- package/dist/utils/action-reference.d.ts.map +1 -0
- package/dist/utils/action-reference.js +120 -0
- package/dist/utils/action-reference.js.map +1 -0
- package/dist/utils/ast-path-operations.d.ts +3 -3
- package/dist/utils/ast-path-operations.d.ts.map +1 -1
- package/dist/utils/ast-path-operations.js +58 -17
- package/dist/utils/ast-path-operations.js.map +1 -1
- package/dist/utils/config.d.ts +11 -5
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +33 -8
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/github-setup.d.ts +4 -4
- package/dist/utils/github-setup.d.ts.map +1 -1
- package/dist/utils/github-setup.js +57 -36
- package/dist/utils/github-setup.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/messaging.d.ts.map +1 -1
- package/dist/utils/messaging.js +7 -3
- package/dist/utils/messaging.js.map +1 -1
- package/dist/utils/preflight.d.ts +2 -2
- package/dist/utils/preflight.d.ts.map +1 -1
- package/dist/utils/preflight.js +43 -41
- package/dist/utils/preflight.js.map +1 -1
- package/dist/utils/versioning.d.ts +1 -1
- package/dist/utils/versioning.d.ts.map +1 -1
- package/dist/utils/versioning.js +10 -10
- package/dist/utils/versioning.js.map +1 -1
- package/package.json +11 -4
- package/src/generators/init.tpl.ts +374 -102
- package/src/generators/workflows.tpl.ts +54 -45
- package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts +0 -32
- package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts.map +0 -1
- package/dist/templates/actions/detect-changes-nx.yml.tpl.js +0 -227
- package/dist/templates/actions/detect-changes-nx.yml.tpl.js.map +0 -1
- package/dist/utils/idempotency.d.ts +0 -187
- package/dist/utils/idempotency.d.ts.map +0 -1
- package/dist/utils/idempotency.js +0 -304
- package/dist/utils/idempotency.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-format-utils.js","sourceRoot":"","sources":["../../src/templates/yaml-format-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,YAAoB,EAAE;IAC5E,OAAO,WAAW,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"yaml-format-utils.js","sourceRoot":"","sources":["../../src/templates/yaml-format-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,YAAoB,EAAE;IAC5E,OAAO,WAAW,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACxE,yEAAyE;QACzE,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS;YAAE,OAAO,KAAK,CAAA;QAE9C,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAA;QAEhC,8EAA8E;QAC9E,MAAM,aAAa,GAAa,EAAE,CAAA;QAClC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAa,EAAE,EAAE;YAC5D,MAAM,WAAW,GAAG,UAAU,aAAa,CAAC,MAAM,IAAI,CAAA;YACtD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzB,OAAO,WAAW,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,gDAAgD;QAChD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;QAC3D,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;QAE7D,8EAA8E;QAC9E,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QACtD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;QACnE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;QAE1D,iCAAiC;QACjC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACxC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QAEF,OAAO,qBAAqB,SAAS,YAAY,CAAA;IACnD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -34,32 +34,51 @@ export interface DomainConfig {
|
|
|
34
34
|
* Used in workflow comments and documentation.
|
|
35
35
|
*/
|
|
36
36
|
description: string;
|
|
37
|
+
/**
|
|
38
|
+
* Job prefixes to generate for this domain.
|
|
39
|
+
* Each prefix generates a customizable placeholder job named `{prefix}-{domain}`.
|
|
40
|
+
*
|
|
41
|
+
* For example, with domain 'core' and prefixes: ['test', 'deploy', 'lint']:
|
|
42
|
+
* - test-core (runs when core/ changes)
|
|
43
|
+
* - deploy-core (runs when core/ changes)
|
|
44
|
+
* - lint-core (runs when core/ changes)
|
|
45
|
+
*
|
|
46
|
+
* These are placeholder jobs where you add your own logic in the custom jobs section.
|
|
47
|
+
* Prefixes provide more flexibility than the boolean flags (testable, deployable, etc).
|
|
48
|
+
*
|
|
49
|
+
* @example ['test', 'deploy', 'remote-test']
|
|
50
|
+
* @example ['lint', 'build', 'test', 'deploy', 'e2e']
|
|
51
|
+
*/
|
|
52
|
+
prefixes?: string[];
|
|
37
53
|
/**
|
|
38
54
|
* Whether this domain has tests that should be run.
|
|
39
55
|
* If true, generates test jobs for this domain.
|
|
40
56
|
* @default false
|
|
57
|
+
* @deprecated Use `prefixes: ['test']` instead for more flexibility
|
|
41
58
|
*/
|
|
42
59
|
testable?: boolean;
|
|
43
60
|
/**
|
|
44
61
|
* Whether this domain should be deployed.
|
|
45
62
|
* If true, generates deployment jobs for this domain.
|
|
46
63
|
* @default false
|
|
64
|
+
* @deprecated Use `prefixes: ['deploy']` instead for more flexibility
|
|
47
65
|
*/
|
|
48
66
|
deployable?: boolean;
|
|
49
67
|
/**
|
|
50
68
|
* Whether this domain should be tested remotely after deployment.
|
|
51
69
|
* If true, generates remote test jobs for this domain.
|
|
52
70
|
* @default false
|
|
71
|
+
* @deprecated Use `prefixes: ['remote-test']` instead for more flexibility
|
|
53
72
|
*/
|
|
54
73
|
remoteTestable?: boolean;
|
|
55
74
|
}
|
|
56
75
|
/**
|
|
57
76
|
* Complete PipeCraft configuration schema.
|
|
58
77
|
*
|
|
59
|
-
* This is the main configuration interface loaded from `.pipecraftrc
|
|
60
|
-
* the `pipecraft` key in `package.json`.
|
|
61
|
-
* behavior including branch flow, merge
|
|
62
|
-
* versioning, and automated actions.
|
|
78
|
+
* This is the main configuration interface loaded from `.pipecraftrc` (YAML or JSON),
|
|
79
|
+
* `.pipecraftrc.json` (legacy), or the `pipecraft` key in `package.json`.
|
|
80
|
+
* It defines the entire CI/CD pipeline behavior including branch flow, merge
|
|
81
|
+
* strategies, domain configuration, versioning, and automated actions.
|
|
63
82
|
*
|
|
64
83
|
* @example
|
|
65
84
|
* ```typescript
|
|
@@ -177,6 +196,39 @@ export interface PipecraftConfig {
|
|
|
177
196
|
* @default 'npm'
|
|
178
197
|
*/
|
|
179
198
|
packageManager?: 'npm' | 'yarn' | 'pnpm';
|
|
199
|
+
/**
|
|
200
|
+
* How workflows should reference PipeCraft actions.
|
|
201
|
+
*
|
|
202
|
+
* - 'local': Actions copied to ./.github/actions/ (default, full control)
|
|
203
|
+
* - 'remote': Reference published marketplace actions (e.g., pipecraft-lab/pipecraft/actions/detect-changes@v1)
|
|
204
|
+
* - 'source': Use ./actions/ from repo root (internal use only, for PipeCraft's own CI)
|
|
205
|
+
*
|
|
206
|
+
* @default 'local'
|
|
207
|
+
* @example
|
|
208
|
+
* ```typescript
|
|
209
|
+
* // User repos (local mode)
|
|
210
|
+
* actionSourceMode: 'local'
|
|
211
|
+
* // Generates: uses: ./.github/actions/detect-changes
|
|
212
|
+
*
|
|
213
|
+
* // User repos (remote mode)
|
|
214
|
+
* actionSourceMode: 'remote'
|
|
215
|
+
* actionVersion: 'v1.2.3'
|
|
216
|
+
* // Generates: uses: pipecraft-lab/pipecraft/actions/detect-changes@v1.2.3
|
|
217
|
+
*
|
|
218
|
+
* // PipeCraft repo only (source mode)
|
|
219
|
+
* actionSourceMode: 'source'
|
|
220
|
+
* // Generates: uses: ./actions/detect-changes
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
actionSourceMode?: 'local' | 'remote' | 'source';
|
|
224
|
+
/**
|
|
225
|
+
* Version/tag to use when actionSourceMode is 'remote'.
|
|
226
|
+
* Pins workflows to a specific marketplace action version.
|
|
227
|
+
*
|
|
228
|
+
* @example 'v1.2.3', 'v1', 'main'
|
|
229
|
+
* @default 'v1'
|
|
230
|
+
*/
|
|
231
|
+
actionVersion?: string;
|
|
180
232
|
/**
|
|
181
233
|
* Nx monorepo integration configuration.
|
|
182
234
|
* When enabled, PipeCraft generates workflows that leverage Nx's dependency graph
|
|
@@ -334,6 +386,7 @@ export interface PipecraftContext {
|
|
|
334
386
|
domains: Record<string, {
|
|
335
387
|
paths: string[];
|
|
336
388
|
description: string;
|
|
389
|
+
prefixes?: string[];
|
|
337
390
|
testable?: boolean;
|
|
338
391
|
deployable?: boolean;
|
|
339
392
|
remoteTestable?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAA;IAEf;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAA;IAEf;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IAEnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAE/B;;;;OAIG;IACH,aAAa,EAAE,cAAc,GAAG,OAAO,CAAA;IAEvC;;;;OAIG;IACH,0BAA0B,EAAE,OAAO,CAAA;IAEnC;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;IAEpB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE7C;;;;;;;;;OASG;IACH,WAAW,CAAC,EACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAA;IAE1D;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE;QACN;;WAEG;QACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAClC,CAAA;IAED;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAErC;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;IAExC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAEhD;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;;;;;;;OAaG;IACH,EAAE,CAAC,EAAE;QACH;;;WAGG;QACH,OAAO,EAAE,OAAO,CAAA;QAEhB;;;;;WAKG;QACH,KAAK,EAAE,MAAM,EAAE,CAAA;QAEf;;;;;WAKG;QACH,OAAO,CAAC,EAAE,MAAM,CAAA;QAEhB;;;;;WAKG;QACH,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR;;;WAGG;QACH,OAAO,EAAE,OAAO,CAAA;QAEhB;;WAEG;QACH,eAAe,EAAE,OAAO,CAAA;QAExB;;;WAGG;QACH,eAAe,EAAE,OAAO,CAAA;QAExB;;WAEG;QACH,SAAS,EAAE,OAAO,CAAA;QAElB;;WAEG;QACH,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;QAExC;;WAEG;QACH,SAAS,EAAE,MAAM,CAAA;QAEjB;;WAEG;QACH,cAAc,EAAE,MAAM,EAAE,CAAA;KACzB,CAAA;IAED;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX;;WAEG;QACH,OAAO,EAAE,OAAO,CAAA;QAEhB;;WAEG;QACH,eAAe,EAAE,MAAM,CAAA;QAEvB;;WAEG;QACH,mBAAmB,EAAE,OAAO,CAAA;QAE5B;;WAEG;QACH,OAAO,EAAE,OAAO,CAAA;QAEhB;;WAEG;QACH,QAAQ,EAAE,OAAO,CAAA;QAEjB;;WAEG;QACH,SAAS,EAAE,OAAO,CAAA;QAElB;;WAEG;QACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAClC,CAAA;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAE/B;;OAEG;IACH,aAAa,EAAE,cAAc,GAAG,OAAO,CAAA;IAEvC;;OAEG;IACH,0BAA0B,EAAE,OAAO,CAAA;IAEnC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,CACb,MAAM,EACN;QACE,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB,CACF,CAAA;IAED;;OAEG;IACH,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAClC,CAAA;CACF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action Reference Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for generating action references in workflows based on
|
|
5
|
+
* the configured action source mode (embedded, marketplace, or repository).
|
|
6
|
+
*
|
|
7
|
+
* @module utils/action-reference
|
|
8
|
+
*/
|
|
9
|
+
import type { PipecraftConfig } from '../types/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Generate the action reference path based on configuration.
|
|
12
|
+
*
|
|
13
|
+
* @param actionName - Name of the action (e.g., 'detect-changes', 'create-tag')
|
|
14
|
+
* @param config - PipeCraft configuration
|
|
15
|
+
* @returns The action reference string to use in workflows
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Embedded mode (default)
|
|
20
|
+
* getActionReference('detect-changes', { actionSourceMode: 'local' })
|
|
21
|
+
* // Returns: './.github/actions/detect-changes'
|
|
22
|
+
*
|
|
23
|
+
* // Marketplace mode
|
|
24
|
+
* getActionReference('detect-changes', {
|
|
25
|
+
* actionSourceMode: 'remote',
|
|
26
|
+
* actionVersion: 'v1.2.3'
|
|
27
|
+
* })
|
|
28
|
+
* // Returns: 'pipecraft-lab/pipecraft/actions/detect-changes@v1.2.3'
|
|
29
|
+
*
|
|
30
|
+
* // Repository mode (PipeCraft's own CI)
|
|
31
|
+
* getActionReference('detect-changes', { actionSourceMode: 'source' })
|
|
32
|
+
* // Returns: './actions/detect-changes'
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function getActionReference(actionName: string, config: Partial<PipecraftConfig>): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get the output directory for action files during generation.
|
|
38
|
+
*
|
|
39
|
+
* @param config - PipeCraft configuration
|
|
40
|
+
* @returns Directory path where actions should be generated
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* getActionOutputDir({ actionSourceMode: 'local' })
|
|
45
|
+
* // Returns: '.github/actions'
|
|
46
|
+
*
|
|
47
|
+
* getActionOutputDir({ actionSourceMode: 'source' })
|
|
48
|
+
* // Returns: 'actions'
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function getActionOutputDir(config: Partial<PipecraftConfig>): string;
|
|
52
|
+
/**
|
|
53
|
+
* Check if actions should be generated locally.
|
|
54
|
+
*
|
|
55
|
+
* @param config - PipeCraft configuration
|
|
56
|
+
* @returns True if actions should be generated, false if using marketplace
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* shouldGenerateActions({ actionSourceMode: 'local' }) // true
|
|
61
|
+
* shouldGenerateActions({ actionSourceMode: 'remote' }) // false
|
|
62
|
+
* shouldGenerateActions({ actionSourceMode: 'source' }) // true
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function shouldGenerateActions(config: Partial<PipecraftConfig>): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Get human-readable description of the action source mode.
|
|
68
|
+
*
|
|
69
|
+
* @param config - PipeCraft configuration
|
|
70
|
+
* @returns Description string for logging/display
|
|
71
|
+
*/
|
|
72
|
+
export declare function getActionSourceDescription(config: Partial<PipecraftConfig>): string;
|
|
73
|
+
//# sourceMappingURL=action-reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-reference.d.ts","sourceRoot":"","sources":["../../src/utils/action-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAsB/F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAiB3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAG/E;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAkBnF"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action Reference Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for generating action references in workflows based on
|
|
5
|
+
* the configured action source mode (embedded, marketplace, or repository).
|
|
6
|
+
*
|
|
7
|
+
* @module utils/action-reference
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Generate the action reference path based on configuration.
|
|
11
|
+
*
|
|
12
|
+
* @param actionName - Name of the action (e.g., 'detect-changes', 'create-tag')
|
|
13
|
+
* @param config - PipeCraft configuration
|
|
14
|
+
* @returns The action reference string to use in workflows
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Embedded mode (default)
|
|
19
|
+
* getActionReference('detect-changes', { actionSourceMode: 'local' })
|
|
20
|
+
* // Returns: './.github/actions/detect-changes'
|
|
21
|
+
*
|
|
22
|
+
* // Marketplace mode
|
|
23
|
+
* getActionReference('detect-changes', {
|
|
24
|
+
* actionSourceMode: 'remote',
|
|
25
|
+
* actionVersion: 'v1.2.3'
|
|
26
|
+
* })
|
|
27
|
+
* // Returns: 'pipecraft-lab/pipecraft/actions/detect-changes@v1.2.3'
|
|
28
|
+
*
|
|
29
|
+
* // Repository mode (PipeCraft's own CI)
|
|
30
|
+
* getActionReference('detect-changes', { actionSourceMode: 'source' })
|
|
31
|
+
* // Returns: './actions/detect-changes'
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function getActionReference(actionName, config) {
|
|
35
|
+
const mode = config.actionSourceMode || 'local';
|
|
36
|
+
switch (mode) {
|
|
37
|
+
case 'local':
|
|
38
|
+
// Default: Actions in .github/actions/ (user repos)
|
|
39
|
+
return `./.github/actions/${actionName}`;
|
|
40
|
+
case 'remote': {
|
|
41
|
+
// Reference published marketplace actions
|
|
42
|
+
const version = config.actionVersion || 'v1';
|
|
43
|
+
return `pipecraft-lab/pipecraft/actions/${actionName}@${version}`;
|
|
44
|
+
}
|
|
45
|
+
case 'source':
|
|
46
|
+
// Internal: Actions in /actions/ (PipeCraft repo only)
|
|
47
|
+
return `./actions/${actionName}`;
|
|
48
|
+
default:
|
|
49
|
+
// Fallback to local mode
|
|
50
|
+
return `./.github/actions/${actionName}`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get the output directory for action files during generation.
|
|
55
|
+
*
|
|
56
|
+
* @param config - PipeCraft configuration
|
|
57
|
+
* @returns Directory path where actions should be generated
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* getActionOutputDir({ actionSourceMode: 'local' })
|
|
62
|
+
* // Returns: '.github/actions'
|
|
63
|
+
*
|
|
64
|
+
* getActionOutputDir({ actionSourceMode: 'source' })
|
|
65
|
+
* // Returns: 'actions'
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function getActionOutputDir(config) {
|
|
69
|
+
const mode = config.actionSourceMode || 'local';
|
|
70
|
+
switch (mode) {
|
|
71
|
+
case 'local':
|
|
72
|
+
return '.github/actions';
|
|
73
|
+
case 'remote':
|
|
74
|
+
// Don't generate actions locally in remote mode
|
|
75
|
+
return '';
|
|
76
|
+
case 'source':
|
|
77
|
+
return 'actions';
|
|
78
|
+
default:
|
|
79
|
+
return '.github/actions';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if actions should be generated locally.
|
|
84
|
+
*
|
|
85
|
+
* @param config - PipeCraft configuration
|
|
86
|
+
* @returns True if actions should be generated, false if using marketplace
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* shouldGenerateActions({ actionSourceMode: 'local' }) // true
|
|
91
|
+
* shouldGenerateActions({ actionSourceMode: 'remote' }) // false
|
|
92
|
+
* shouldGenerateActions({ actionSourceMode: 'source' }) // true
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export function shouldGenerateActions(config) {
|
|
96
|
+
const mode = config.actionSourceMode || 'local';
|
|
97
|
+
return mode !== 'remote';
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get human-readable description of the action source mode.
|
|
101
|
+
*
|
|
102
|
+
* @param config - PipeCraft configuration
|
|
103
|
+
* @returns Description string for logging/display
|
|
104
|
+
*/
|
|
105
|
+
export function getActionSourceDescription(config) {
|
|
106
|
+
const mode = config.actionSourceMode || 'local';
|
|
107
|
+
switch (mode) {
|
|
108
|
+
case 'local':
|
|
109
|
+
return 'Local actions (full control, in .github/actions/)';
|
|
110
|
+
case 'remote': {
|
|
111
|
+
const version = config.actionVersion || 'v1';
|
|
112
|
+
return `Marketplace actions (pinned to ${version})`;
|
|
113
|
+
}
|
|
114
|
+
case 'source':
|
|
115
|
+
return 'Repository actions (dogfooding /actions/ folder)';
|
|
116
|
+
default:
|
|
117
|
+
return 'Local actions (default mode)';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=action-reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-reference.js","sourceRoot":"","sources":["../../src/utils/action-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,MAAgC;IACrF,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAA;IAE/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,oDAAoD;YACpD,OAAO,qBAAqB,UAAU,EAAE,CAAA;QAE1C,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,0CAA0C;YAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAA;YAC5C,OAAO,mCAAmC,UAAU,IAAI,OAAO,EAAE,CAAA;QACnE,CAAC;QAED,KAAK,QAAQ;YACX,uDAAuD;YACvD,OAAO,aAAa,UAAU,EAAE,CAAA;QAElC;YACE,yBAAyB;YACzB,OAAO,qBAAqB,UAAU,EAAE,CAAA;IAC5C,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAgC;IACjE,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAA;IAE/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,iBAAiB,CAAA;QAE1B,KAAK,QAAQ;YACX,gDAAgD;YAChD,OAAO,EAAE,CAAA;QAEX,KAAK,QAAQ;YACX,OAAO,SAAS,CAAA;QAElB;YACE,OAAO,iBAAiB,CAAA;IAC5B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAgC;IACpE,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAA;IAC/C,OAAO,IAAI,KAAK,QAAQ,CAAA;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAgC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAA;IAE/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,mDAAmD,CAAA;QAE5D,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAA;YAC5C,OAAO,kCAAkC,OAAO,GAAG,CAAA;QACrD,CAAC;QAED,KAAK,QAAQ;YACX,OAAO,kDAAkD,CAAA;QAE3D;YACE,OAAO,8BAA8B,CAAA;IACzC,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type Node, YAMLMap } from 'yaml';
|
|
2
2
|
/**
|
|
3
3
|
* # AST Path Operations for YAML Manipulation
|
|
4
4
|
*
|
|
@@ -43,7 +43,7 @@ import { YAMLMap, Node } from 'yaml';
|
|
|
43
43
|
* value: createValueFromString(`
|
|
44
44
|
* runs-on: ubuntu-latest
|
|
45
45
|
* steps:
|
|
46
|
-
* - uses:
|
|
46
|
+
* - uses: ./actions/detect-changes
|
|
47
47
|
* with:
|
|
48
48
|
* baseRef: ${{ inputs.baseRef || 'main' }}
|
|
49
49
|
* `)
|
|
@@ -215,7 +215,7 @@ export declare function ensurePathAndApply(doc: YAMLMap, config: PathOperationCo
|
|
|
215
215
|
* value: createValueFromString(`
|
|
216
216
|
* runs-on: ubuntu-latest
|
|
217
217
|
* steps:
|
|
218
|
-
* - uses:
|
|
218
|
+
* - uses: ./actions/detect-changes
|
|
219
219
|
* `)
|
|
220
220
|
* }
|
|
221
221
|
* ]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-path-operations.d.ts","sourceRoot":"","sources":["../../src/utils/ast-path-operations.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ast-path-operations.d.ts","sourceRoot":"","sources":["../../src/utils/ast-path-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAoC,OAAO,EAAW,MAAM,MAAM,CAAA;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAA;AAEtE;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG,EAAE,CAAA;AAEzE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,aAAa,CAAA;IACxB,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,QAAQ,CAAC,EAAE,GAAG,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,kBAAkB,CAAC,EAAE,OAAO,GAC3B,IAAI,CAiFN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAcpE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI,CAmCN;AAkID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,mBAAmB,EAAE,EACjC,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI,CAIN;AAED;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CA+B7F;AAoCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAKlE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAErD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseDocument, stringify, YAMLMap, YAMLSeq
|
|
1
|
+
import { parseDocument, Scalar, stringify, YAMLMap, YAMLSeq } from 'yaml';
|
|
2
2
|
/**
|
|
3
3
|
* Set a value at a specific path in the YAML AST
|
|
4
4
|
*
|
|
@@ -55,11 +55,9 @@ export function setPathValue(doc, path, value, document, commentBefore, spaceBef
|
|
|
55
55
|
// For job keys, we create Scalar keys so we can add comments to the KEY later (in template code).
|
|
56
56
|
// For non-job paths with comments, we add comments to the VALUE node.
|
|
57
57
|
const isJobKey = pathParts.length === 2 && pathParts[0] === 'jobs';
|
|
58
|
-
// Check if key already exists
|
|
58
|
+
// Check if key already exists
|
|
59
59
|
const existingValue = current.get(finalKey);
|
|
60
|
-
|
|
61
|
-
current.delete(finalKey);
|
|
62
|
-
}
|
|
60
|
+
const keyExists = existingValue !== undefined;
|
|
63
61
|
if (isJobKey || commentBefore || spaceBeforeComment) {
|
|
64
62
|
// For job keys OR any field with comments/spacing: Create a Scalar key
|
|
65
63
|
// Comments and spacing should be attached to keys, not values, for proper YAML formatting
|
|
@@ -67,24 +65,34 @@ export function setPathValue(doc, path, value, document, commentBefore, spaceBef
|
|
|
67
65
|
if (commentBefore) {
|
|
68
66
|
;
|
|
69
67
|
scalarKey.commentBefore = commentBefore;
|
|
70
|
-
// For job keys, also add to value for backwards compatibility with tests
|
|
71
|
-
if (isJobKey && node) {
|
|
72
|
-
;
|
|
73
|
-
node.commentBefore = commentBefore;
|
|
74
|
-
}
|
|
75
68
|
}
|
|
76
69
|
if (spaceBeforeComment) {
|
|
77
70
|
;
|
|
78
71
|
scalarKey.spaceBefore = true;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
72
|
+
}
|
|
73
|
+
if (keyExists) {
|
|
74
|
+
// Update existing key in-place to preserve order
|
|
75
|
+
// Find the existing pair and update it
|
|
76
|
+
const pair = current.items.find((p) => {
|
|
77
|
+
const keyStr = p.key instanceof Scalar ? p.key.value : p.key;
|
|
78
|
+
return keyStr === finalKey;
|
|
79
|
+
});
|
|
80
|
+
if (pair) {
|
|
81
|
+
pair.key = scalarKey;
|
|
82
|
+
pair.value = node;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Shouldn't happen, but fallback to add
|
|
86
|
+
current.add({ key: scalarKey, value: node });
|
|
82
87
|
}
|
|
83
88
|
}
|
|
84
|
-
|
|
89
|
+
else {
|
|
90
|
+
// Key doesn't exist, add it
|
|
91
|
+
current.add({ key: scalarKey, value: node });
|
|
92
|
+
}
|
|
85
93
|
}
|
|
86
94
|
else {
|
|
87
|
-
// Normal case: use the simple set() method which
|
|
95
|
+
// Normal case: use the simple set() method which updates in-place and preserves order
|
|
88
96
|
current.set(finalKey, node);
|
|
89
97
|
}
|
|
90
98
|
}
|
|
@@ -324,7 +332,7 @@ function createNode(value) {
|
|
|
324
332
|
* value: createValueFromString(`
|
|
325
333
|
* runs-on: ubuntu-latest
|
|
326
334
|
* steps:
|
|
327
|
-
* - uses:
|
|
335
|
+
* - uses: ./actions/detect-changes
|
|
328
336
|
* `)
|
|
329
337
|
* }
|
|
330
338
|
* ]
|
|
@@ -388,7 +396,40 @@ export function createValueFromString(yamlString, context, document) {
|
|
|
388
396
|
}
|
|
389
397
|
// Parse the YAML string and return the root content as a proper Node
|
|
390
398
|
const doc = parseDocument(processedString);
|
|
391
|
-
|
|
399
|
+
const contents = doc.contents;
|
|
400
|
+
// Set all maps and seqs to use block style (not flow/compact)
|
|
401
|
+
setBlockStyle(contents);
|
|
402
|
+
return contents;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Recursively set block style on all YAMLMap and YAMLSeq nodes
|
|
406
|
+
* This ensures proper YAML formatting instead of compact JSON-like flow style
|
|
407
|
+
*/
|
|
408
|
+
function setBlockStyle(node) {
|
|
409
|
+
if (node instanceof YAMLMap) {
|
|
410
|
+
node.flow = false;
|
|
411
|
+
for (const pair of node.items) {
|
|
412
|
+
if (pair.value) {
|
|
413
|
+
setBlockStyle(pair.value);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
else if (node instanceof YAMLSeq) {
|
|
418
|
+
// Check if this is a simple array (only scalar values)
|
|
419
|
+
const isSimpleArray = node.items.every(item => {
|
|
420
|
+
return (item instanceof Scalar ||
|
|
421
|
+
typeof item === 'string' ||
|
|
422
|
+
typeof item === 'number' ||
|
|
423
|
+
typeof item === 'boolean');
|
|
424
|
+
});
|
|
425
|
+
// Keep flow style (inline) for simple arrays, use block style for complex arrays
|
|
426
|
+
node.flow = isSimpleArray;
|
|
427
|
+
for (const item of node.items) {
|
|
428
|
+
if (item && typeof item === 'object' && !(item instanceof Scalar)) {
|
|
429
|
+
setBlockStyle(item);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
392
433
|
}
|
|
393
434
|
/**
|
|
394
435
|
* Create a YAML node from a JavaScript object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-path-operations.js","sourceRoot":"","sources":["../../src/utils/ast-path-operations.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ast-path-operations.js","sourceRoot":"","sources":["../../src/utils/ast-path-operations.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This module provides functions to load and validate PipeCraft configuration files.
|
|
5
5
|
* It uses cosmiconfig to search for configuration in multiple locations:
|
|
6
|
+
* - .pipecraftrc (YAML or JSON, recommended)
|
|
6
7
|
* - .pipecraftrc.json
|
|
7
|
-
* - .pipecraftrc
|
|
8
|
+
* - .pipecraftrc.yaml
|
|
9
|
+
* - .pipecraftrc.yml
|
|
10
|
+
* - .pipecraftrc.js
|
|
8
11
|
* - pipecraft.config.js
|
|
9
12
|
* - package.json (pipecraft key)
|
|
10
13
|
*
|
|
@@ -19,10 +22,13 @@
|
|
|
19
22
|
* Uses cosmiconfig to search for configuration files in standard locations.
|
|
20
23
|
* If no path is provided, searches the current directory and ancestors for
|
|
21
24
|
* configuration files in this order:
|
|
22
|
-
* 1. .pipecraftrc
|
|
23
|
-
* 2. .pipecraftrc
|
|
24
|
-
* 3.
|
|
25
|
-
* 4.
|
|
25
|
+
* 1. .pipecraftrc (YAML or JSON, recommended)
|
|
26
|
+
* 2. .pipecraftrc.json
|
|
27
|
+
* 3. .pipecraftrc.yaml
|
|
28
|
+
* 4. .pipecraftrc.yml
|
|
29
|
+
* 5. .pipecraftrc.js
|
|
30
|
+
* 6. pipecraft.config.js
|
|
31
|
+
* 7. package.json (pipecraft key)
|
|
26
32
|
*
|
|
27
33
|
* @param configPath - Optional explicit path to configuration file
|
|
28
34
|
* @returns Parsed configuration object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,UAAU,GAAI,aAAa,MAAM,QAwB7C,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,YAmEzC,CAAA"}
|
package/dist/utils/config.js
CHANGED
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This module provides functions to load and validate PipeCraft configuration files.
|
|
5
5
|
* It uses cosmiconfig to search for configuration in multiple locations:
|
|
6
|
+
* - .pipecraftrc (YAML or JSON, recommended)
|
|
6
7
|
* - .pipecraftrc.json
|
|
7
|
-
* - .pipecraftrc
|
|
8
|
+
* - .pipecraftrc.yaml
|
|
9
|
+
* - .pipecraftrc.yml
|
|
10
|
+
* - .pipecraftrc.js
|
|
8
11
|
* - pipecraft.config.js
|
|
9
12
|
* - package.json (pipecraft key)
|
|
10
13
|
*
|
|
@@ -20,10 +23,13 @@ import { cosmiconfigSync } from 'cosmiconfig';
|
|
|
20
23
|
* Uses cosmiconfig to search for configuration files in standard locations.
|
|
21
24
|
* If no path is provided, searches the current directory and ancestors for
|
|
22
25
|
* configuration files in this order:
|
|
23
|
-
* 1. .pipecraftrc
|
|
24
|
-
* 2. .pipecraftrc
|
|
25
|
-
* 3.
|
|
26
|
-
* 4.
|
|
26
|
+
* 1. .pipecraftrc (YAML or JSON, recommended)
|
|
27
|
+
* 2. .pipecraftrc.json
|
|
28
|
+
* 3. .pipecraftrc.yaml
|
|
29
|
+
* 4. .pipecraftrc.yml
|
|
30
|
+
* 5. .pipecraftrc.js
|
|
31
|
+
* 6. pipecraft.config.js
|
|
32
|
+
* 7. package.json (pipecraft key)
|
|
27
33
|
*
|
|
28
34
|
* @param configPath - Optional explicit path to configuration file
|
|
29
35
|
* @returns Parsed configuration object
|
|
@@ -39,10 +45,21 @@ import { cosmiconfigSync } from 'cosmiconfig';
|
|
|
39
45
|
* ```
|
|
40
46
|
*/
|
|
41
47
|
export const loadConfig = (configPath) => {
|
|
42
|
-
const explorer = cosmiconfigSync('pipecraft'
|
|
48
|
+
const explorer = cosmiconfigSync('pipecraft', {
|
|
49
|
+
searchPlaces: [
|
|
50
|
+
'.pipecraftrc',
|
|
51
|
+
'.pipecraftrc.json',
|
|
52
|
+
'.pipecraftrc.yaml',
|
|
53
|
+
'.pipecraftrc.yml',
|
|
54
|
+
'.pipecraftrc.js',
|
|
55
|
+
'pipecraft.config.js',
|
|
56
|
+
'package.json'
|
|
57
|
+
]
|
|
58
|
+
});
|
|
43
59
|
const result = configPath ? explorer.load(configPath) : explorer.search();
|
|
44
60
|
if (!result) {
|
|
45
|
-
throw new Error(`No configuration file found. Expected: ${configPath ||
|
|
61
|
+
throw new Error(`No configuration file found. Expected: ${configPath ||
|
|
62
|
+
'.pipecraftrc, .pipecraftrc.json, .pipecraftrc.yml, .pipecraftrc.yaml, or .pipecraftrc.js'}`);
|
|
46
63
|
}
|
|
47
64
|
return result.config;
|
|
48
65
|
};
|
|
@@ -72,7 +89,15 @@ export const loadConfig = (configPath) => {
|
|
|
72
89
|
*/
|
|
73
90
|
export const validateConfig = (config) => {
|
|
74
91
|
// Check for all required top-level fields
|
|
75
|
-
const requiredFields = [
|
|
92
|
+
const requiredFields = [
|
|
93
|
+
'ciProvider',
|
|
94
|
+
'mergeStrategy',
|
|
95
|
+
'requireConventionalCommits',
|
|
96
|
+
'initialBranch',
|
|
97
|
+
'finalBranch',
|
|
98
|
+
'branchFlow',
|
|
99
|
+
'domains'
|
|
100
|
+
];
|
|
76
101
|
for (const field of requiredFields) {
|
|
77
102
|
if (!(field in config)) {
|
|
78
103
|
throw new Error(`Missing required field: ${field}`);
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAmB,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE;QAC5C,YAAY,EAAE;YACZ,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,iBAAiB;YACjB,qBAAqB;YACrB,cAAc;SACf;KACF,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;IAEzE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,0CACE,UAAU;YACV,0FACF,EAAE,CACH,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAW,EAAE,EAAE;IAC5C,0CAA0C;IAC1C,MAAM,cAAc,GAAG;QACrB,YAAY;QACZ,eAAe;QACf,4BAA4B;QAC5B,eAAe;QACf,aAAa;QACb,YAAY;QACZ,SAAS;KACV,CAAA;IAED,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IAED,oEAAoE;IACpE,8DAA8D;IAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IAED,6BAA6B;IAC7B,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC9C,CAAC;IAED,qCAAqC;IACrC,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAGnE,EAAE,CAAC;QACJ,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,qBAAqB,CAAC,CAAA;QAC7D,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,6BAA6B,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,uCAAuC,CAAC,CAAA;QAC/E,CAAC;QAED,uCAAuC;QACvC,uDAAuD;QACvD,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC9B,CAAC;QACD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC1C,YAAY,CAAC,UAAU,GAAG,IAAI,CAAA;QAChC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|