pipecraft 0.29.3 → 0.36.14

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.
Files changed (142) hide show
  1. package/README.md +128 -54
  2. package/dist/cli/index.d.ts +3 -3
  3. package/dist/cli/index.js +68 -25
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/generators/init.tpl.d.ts +4 -4
  6. package/dist/generators/init.tpl.d.ts.map +1 -1
  7. package/dist/generators/init.tpl.js +214 -108
  8. package/dist/generators/init.tpl.js.map +1 -1
  9. package/dist/generators/workflows.tpl.d.ts +9 -9
  10. package/dist/generators/workflows.tpl.d.ts.map +1 -1
  11. package/dist/generators/workflows.tpl.js +33 -36
  12. package/dist/generators/workflows.tpl.js.map +1 -1
  13. package/dist/templates/actions/calculate-version.yml.tpl.d.ts +7 -4
  14. package/dist/templates/actions/calculate-version.yml.tpl.d.ts.map +1 -1
  15. package/dist/templates/actions/calculate-version.yml.tpl.js +49 -23
  16. package/dist/templates/actions/calculate-version.yml.tpl.js.map +1 -1
  17. package/dist/templates/actions/create-pr.yml.tpl.d.ts +5 -2
  18. package/dist/templates/actions/create-pr.yml.tpl.d.ts.map +1 -1
  19. package/dist/templates/actions/create-pr.yml.tpl.js +14 -8
  20. package/dist/templates/actions/create-pr.yml.tpl.js.map +1 -1
  21. package/dist/templates/actions/create-release.yml.tpl.d.ts +5 -2
  22. package/dist/templates/actions/create-release.yml.tpl.d.ts.map +1 -1
  23. package/dist/templates/actions/create-release.yml.tpl.js +16 -11
  24. package/dist/templates/actions/create-release.yml.tpl.js.map +1 -1
  25. package/dist/templates/actions/create-tag.yml.tpl.d.ts +5 -2
  26. package/dist/templates/actions/create-tag.yml.tpl.d.ts.map +1 -1
  27. package/dist/templates/actions/create-tag.yml.tpl.js +13 -9
  28. package/dist/templates/actions/create-tag.yml.tpl.js.map +1 -1
  29. package/dist/templates/actions/detect-changes.yml.tpl.d.ts +17 -51
  30. package/dist/templates/actions/detect-changes.yml.tpl.d.ts.map +1 -1
  31. package/dist/templates/actions/detect-changes.yml.tpl.js +130 -110
  32. package/dist/templates/actions/detect-changes.yml.tpl.js.map +1 -1
  33. package/dist/templates/actions/manage-branch.yml.tpl.d.ts +5 -2
  34. package/dist/templates/actions/manage-branch.yml.tpl.d.ts.map +1 -1
  35. package/dist/templates/actions/manage-branch.yml.tpl.js +13 -9
  36. package/dist/templates/actions/manage-branch.yml.tpl.js.map +1 -1
  37. package/dist/templates/actions/promote-branch.yml.tpl.d.ts +5 -2
  38. package/dist/templates/actions/promote-branch.yml.tpl.d.ts.map +1 -1
  39. package/dist/templates/actions/promote-branch.yml.tpl.js +39 -92
  40. package/dist/templates/actions/promote-branch.yml.tpl.js.map +1 -1
  41. package/dist/templates/release-it.cjs.tpl.d.ts +1 -1
  42. package/dist/templates/release-it.cjs.tpl.d.ts.map +1 -1
  43. package/dist/templates/release-it.cjs.tpl.js +38 -29
  44. package/dist/templates/release-it.cjs.tpl.js.map +1 -1
  45. package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts +1 -1
  46. package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts.map +1 -1
  47. package/dist/templates/workflows/enforce-pr-target.yml.tpl.js +2 -3
  48. package/dist/templates/workflows/enforce-pr-target.yml.tpl.js.map +1 -1
  49. package/dist/templates/workflows/pipeline.yml.tpl.d.ts +2 -2
  50. package/dist/templates/workflows/pipeline.yml.tpl.d.ts.map +1 -1
  51. package/dist/templates/workflows/pipeline.yml.tpl.js +337 -84
  52. package/dist/templates/workflows/pipeline.yml.tpl.js.map +1 -1
  53. package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts +1 -1
  54. package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts.map +1 -1
  55. package/dist/templates/workflows/pr-title-check.yml.tpl.js +101 -22
  56. package/dist/templates/workflows/pr-title-check.yml.tpl.js.map +1 -1
  57. package/dist/templates/workflows/shared/index.d.ts +4 -2
  58. package/dist/templates/workflows/shared/index.d.ts.map +1 -1
  59. package/dist/templates/workflows/shared/index.js +4 -2
  60. package/dist/templates/workflows/shared/index.js.map +1 -1
  61. package/dist/templates/workflows/shared/managed-workflow.d.ts +32 -0
  62. package/dist/templates/workflows/shared/managed-workflow.d.ts.map +1 -0
  63. package/dist/templates/workflows/shared/managed-workflow.js +51 -0
  64. package/dist/templates/workflows/shared/managed-workflow.js.map +1 -0
  65. package/dist/templates/workflows/shared/operations-changes.d.ts +13 -3
  66. package/dist/templates/workflows/shared/operations-changes.d.ts.map +1 -1
  67. package/dist/templates/workflows/shared/operations-changes.js +42 -16
  68. package/dist/templates/workflows/shared/operations-changes.js.map +1 -1
  69. package/dist/templates/workflows/shared/operations-domain-jobs.d.ts +18 -1
  70. package/dist/templates/workflows/shared/operations-domain-jobs.d.ts.map +1 -1
  71. package/dist/templates/workflows/shared/operations-domain-jobs.js +142 -17
  72. package/dist/templates/workflows/shared/operations-domain-jobs.js.map +1 -1
  73. package/dist/templates/workflows/shared/operations-gate.d.ts +6 -0
  74. package/dist/templates/workflows/shared/operations-gate.d.ts.map +1 -0
  75. package/dist/templates/workflows/shared/operations-gate.js +116 -0
  76. package/dist/templates/workflows/shared/operations-gate.js.map +1 -0
  77. package/dist/templates/workflows/shared/operations-header.d.ts +11 -1
  78. package/dist/templates/workflows/shared/operations-header.d.ts.map +1 -1
  79. package/dist/templates/workflows/shared/operations-header.js +66 -7
  80. package/dist/templates/workflows/shared/operations-header.js.map +1 -1
  81. package/dist/templates/workflows/shared/operations-tag-promote.d.ts +4 -3
  82. package/dist/templates/workflows/shared/operations-tag-promote.d.ts.map +1 -1
  83. package/dist/templates/workflows/shared/operations-tag-promote.js +144 -33
  84. package/dist/templates/workflows/shared/operations-tag-promote.js.map +1 -1
  85. package/dist/templates/workflows/shared/operations-version.d.ts +3 -2
  86. package/dist/templates/workflows/shared/operations-version.d.ts.map +1 -1
  87. package/dist/templates/workflows/shared/operations-version.js +17 -16
  88. package/dist/templates/workflows/shared/operations-version.js.map +1 -1
  89. package/dist/templates/yaml-format-utils.d.ts.map +1 -1
  90. package/dist/templates/yaml-format-utils.js +1 -5
  91. package/dist/templates/yaml-format-utils.js.map +1 -1
  92. package/dist/types/index.d.ts +65 -53
  93. package/dist/types/index.d.ts.map +1 -1
  94. package/dist/utils/action-reference.d.ts +73 -0
  95. package/dist/utils/action-reference.d.ts.map +1 -0
  96. package/dist/utils/action-reference.js +120 -0
  97. package/dist/utils/action-reference.js.map +1 -0
  98. package/dist/utils/ast-path-operations.d.ts +3 -3
  99. package/dist/utils/ast-path-operations.d.ts.map +1 -1
  100. package/dist/utils/ast-path-operations.js +58 -17
  101. package/dist/utils/ast-path-operations.js.map +1 -1
  102. package/dist/utils/config.d.ts +16 -5
  103. package/dist/utils/config.d.ts.map +1 -1
  104. package/dist/utils/config.js +69 -12
  105. package/dist/utils/config.js.map +1 -1
  106. package/dist/utils/github-setup.d.ts +7 -7
  107. package/dist/utils/github-setup.d.ts.map +1 -1
  108. package/dist/utils/github-setup.js +84 -63
  109. package/dist/utils/github-setup.js.map +1 -1
  110. package/dist/utils/logger.d.ts.map +1 -1
  111. package/dist/utils/logger.js.map +1 -1
  112. package/dist/utils/messaging.d.ts +2 -2
  113. package/dist/utils/messaging.d.ts.map +1 -1
  114. package/dist/utils/messaging.js +12 -8
  115. package/dist/utils/messaging.js.map +1 -1
  116. package/dist/utils/preflight.d.ts +2 -2
  117. package/dist/utils/preflight.d.ts.map +1 -1
  118. package/dist/utils/preflight.js +43 -41
  119. package/dist/utils/preflight.js.map +1 -1
  120. package/dist/utils/versioning.d.ts +1 -1
  121. package/dist/utils/versioning.d.ts.map +1 -1
  122. package/dist/utils/versioning.js +10 -10
  123. package/dist/utils/versioning.js.map +1 -1
  124. package/dist/utils/workflow-semantics.d.ts +61 -0
  125. package/dist/utils/workflow-semantics.d.ts.map +1 -0
  126. package/dist/utils/workflow-semantics.js +230 -0
  127. package/dist/utils/workflow-semantics.js.map +1 -0
  128. package/package.json +12 -4
  129. package/src/generators/init.tpl.ts +275 -128
  130. package/src/generators/workflows.tpl.ts +54 -57
  131. package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts +0 -32
  132. package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts.map +0 -1
  133. package/dist/templates/actions/detect-changes-nx.yml.tpl.js +0 -227
  134. package/dist/templates/actions/detect-changes-nx.yml.tpl.js.map +0 -1
  135. package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts +0 -22
  136. package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts.map +0 -1
  137. package/dist/templates/workflows/pipeline-nx.yml.tpl.js +0 -196
  138. package/dist/templates/workflows/pipeline-nx.yml.tpl.js.map +0 -1
  139. package/dist/utils/idempotency.d.ts +0 -187
  140. package/dist/utils/idempotency.d.ts.map +0 -1
  141. package/dist/utils/idempotency.js +0 -304
  142. package/dist/utils/idempotency.js.map +0 -1
@@ -5,13 +5,76 @@
5
5
  * These jobs are marked as 'preserve' so users can customize them.
6
6
  */
7
7
  import { createValueFromString } from '../../../utils/ast-path-operations.js';
8
+ /**
9
+ * Create placeholder job operations for domains with custom prefixes
10
+ *
11
+ * Generates jobs based on the `prefixes` field in domain config.
12
+ * For example, with domain 'core' and prefixes ['lint', 'build', 'test'],
13
+ * this creates: lint-core, build-core, test-core
14
+ *
15
+ * @param ctx Context with domain configurations
16
+ * @returns Array of path operations for all prefix-based jobs
17
+ */
18
+ export function createPrefixedDomainJobOperations(ctx) {
19
+ const { domains } = ctx;
20
+ const operations = [];
21
+ // Group jobs by prefix to add section comments
22
+ const jobsByPrefix = {};
23
+ Object.keys(domains)
24
+ .sort()
25
+ .forEach(domain => {
26
+ const domainConfig = domains[domain];
27
+ // Only process domains with prefixes defined
28
+ if (domainConfig.prefixes && Array.isArray(domainConfig.prefixes)) {
29
+ domainConfig.prefixes.forEach((prefix) => {
30
+ if (!jobsByPrefix[prefix]) {
31
+ jobsByPrefix[prefix] = [];
32
+ }
33
+ jobsByPrefix[prefix].push({
34
+ domain,
35
+ jobName: `${prefix}-${domain}`
36
+ });
37
+ });
38
+ }
39
+ });
40
+ // Generate operations for each prefix group
41
+ Object.keys(jobsByPrefix)
42
+ .sort()
43
+ .forEach(prefix => {
44
+ const jobs = jobsByPrefix[prefix];
45
+ jobs.forEach((job, index) => {
46
+ operations.push({
47
+ path: `jobs.${job.jobName}`,
48
+ operation: 'preserve', // User can customize these jobs - won't overwrite if exists
49
+ value: createValueFromString(`
50
+ needs: changes
51
+ if: \${{ needs.changes.outputs.${job.domain} == 'true' }}
52
+ runs-on: ubuntu-latest
53
+ steps:
54
+ - uses: actions/checkout@v4
55
+ with:
56
+ ref: \${{ inputs.commitSha || github.sha }}
57
+ # TODO: Replace with your ${job.domain} ${prefix} logic
58
+ - name: Run ${prefix} for ${job.domain}
59
+ run: |
60
+ echo "Running ${prefix} for ${job.domain} domain"
61
+ echo "Replace this with your actual ${prefix} commands"
62
+ # Example: npm run ${prefix}:${job.domain}
63
+ `)
64
+ });
65
+ });
66
+ });
67
+ return operations;
68
+ }
8
69
  /**
9
70
  * Create test job operations for each domain
10
71
  */
11
72
  export function createDomainTestJobOperations(ctx) {
12
73
  const { domains } = ctx;
13
74
  const operations = [];
14
- const testableDomains = Object.keys(domains).sort().filter(d => domains[d].testable !== false);
75
+ const testableDomains = Object.keys(domains)
76
+ .sort()
77
+ .filter(d => domains[d].testable !== false);
15
78
  testableDomains.forEach((domain, index) => {
16
79
  operations.push({
17
80
  path: `jobs.test-${domain}`,
@@ -20,10 +83,10 @@ export function createDomainTestJobOperations(ctx) {
20
83
  ...(index === 0 && {
21
84
  commentBefore: `
22
85
  =============================================================================
23
- TESTING JOBS (✅ Customize these with your test logic)
86
+ TESTING JOBS (✅ Customize these with your test logic)
24
87
  =============================================================================
25
- These jobs run tests for each domain when changes are detected.
26
- Replace the TODO comments with your actual test commands.
88
+ These jobs run tests for each domain when changes are detected.
89
+ Replace the TODO comments with your actual test commands.
27
90
  `
28
91
  }),
29
92
  value: createValueFromString(`
@@ -51,7 +114,9 @@ Replace the TODO comments with your actual test commands.
51
114
  export function createDomainDeployJobOperations(ctx) {
52
115
  const { domains } = ctx;
53
116
  const operations = [];
54
- const deployableDomains = Object.keys(domains).sort().filter(d => domains[d].deployable === true);
117
+ const deployableDomains = Object.keys(domains)
118
+ .sort()
119
+ .filter(d => domains[d].deployable === true);
55
120
  deployableDomains.forEach((domain, index) => {
56
121
  operations.push({
57
122
  path: `jobs.deploy-${domain}`,
@@ -60,10 +125,10 @@ export function createDomainDeployJobOperations(ctx) {
60
125
  ...(index === 0 && {
61
126
  commentBefore: `
62
127
  =============================================================================
63
- DEPLOYMENT JOBS (✅ Customize these with your deploy logic)
128
+ DEPLOYMENT JOBS (✅ Customize these with your deploy logic)
64
129
  =============================================================================
65
- These jobs deploy each domain when changes are detected and tests pass.
66
- Replace the TODO comments with your actual deployment commands.
130
+ These jobs deploy each domain when changes are detected and tests pass.
131
+ Replace the TODO commands with your actual deployment commands.
67
132
  `
68
133
  }),
69
134
  value: createValueFromString(`
@@ -91,7 +156,9 @@ Replace the TODO comments with your actual deployment commands.
91
156
  export function createDomainRemoteTestJobOperations(ctx) {
92
157
  const { domains } = ctx;
93
158
  const operations = [];
94
- const remoteTestableDomains = Object.keys(domains).sort().filter(d => domains[d].remoteTestable === true);
159
+ const remoteTestableDomains = Object.keys(domains)
160
+ .sort()
161
+ .filter(d => domains[d].remoteTestable === true);
95
162
  remoteTestableDomains.forEach((domain, index) => {
96
163
  operations.push({
97
164
  path: `jobs.remote-test-${domain}`,
@@ -100,10 +167,10 @@ export function createDomainRemoteTestJobOperations(ctx) {
100
167
  ...(index === 0 && {
101
168
  commentBefore: `
102
169
  =============================================================================
103
- REMOTE TESTING JOBS (✅ Customize these with your remote test logic)
170
+ REMOTE TESTING JOBS (✅ Customize these with your remote test logic)
104
171
  =============================================================================
105
- These jobs test deployed services remotely after deployment succeeds.
106
- Replace the TODO comments with your actual remote testing commands.
172
+ These jobs test deployed services remotely after deployment succeeds.
173
+ Replace the TODO comments with your actual remote testing commands.
107
174
  `
108
175
  }),
109
176
  value: createValueFromString(`
@@ -127,12 +194,70 @@ Replace the TODO comments with your actual remote testing commands.
127
194
  }
128
195
  /**
129
196
  * Get list of all domain job names for dependency management
197
+ *
198
+ * Supports both legacy boolean flags (testable, deployable, remoteTestable)
199
+ * and new flexible prefixes array.
200
+ *
201
+ * @returns Object with arrays of job names categorized by type
130
202
  */
131
203
  export function getDomainJobNames(domains) {
132
- return {
133
- testJobs: Object.keys(domains).sort().filter(d => domains[d].testable !== false).map(d => `test-${d}`),
134
- deployJobs: Object.keys(domains).sort().filter(d => domains[d].deployable === true).map(d => `deploy-${d}`),
135
- remoteTestJobs: Object.keys(domains).sort().filter(d => domains[d].remoteTestable === true).map(d => `remote-test-${d}`)
136
- };
204
+ const testJobs = [];
205
+ const deployJobs = [];
206
+ const remoteTestJobs = [];
207
+ const allJobsByPrefix = {};
208
+ Object.keys(domains)
209
+ .sort()
210
+ .forEach(domain => {
211
+ const domainConfig = domains[domain];
212
+ // New approach: use prefixes if defined
213
+ if (domainConfig.prefixes && Array.isArray(domainConfig.prefixes)) {
214
+ domainConfig.prefixes.forEach((prefix) => {
215
+ const jobName = `${prefix}-${domain}`;
216
+ // Categorize by known prefixes for backwards compatibility
217
+ if (prefix === 'test') {
218
+ testJobs.push(jobName);
219
+ }
220
+ else if (prefix === 'deploy') {
221
+ deployJobs.push(jobName);
222
+ }
223
+ else if (prefix === 'remote-test') {
224
+ remoteTestJobs.push(jobName);
225
+ }
226
+ // Also track all jobs by prefix for flexible access
227
+ if (!allJobsByPrefix[prefix]) {
228
+ allJobsByPrefix[prefix] = [];
229
+ }
230
+ allJobsByPrefix[prefix].push(jobName);
231
+ });
232
+ }
233
+ else {
234
+ // Legacy approach: use boolean flags
235
+ if (domainConfig.testable !== false) {
236
+ const jobName = `test-${domain}`;
237
+ testJobs.push(jobName);
238
+ if (!allJobsByPrefix['test']) {
239
+ allJobsByPrefix['test'] = [];
240
+ }
241
+ allJobsByPrefix['test'].push(jobName);
242
+ }
243
+ if (domainConfig.deployable === true) {
244
+ const jobName = `deploy-${domain}`;
245
+ deployJobs.push(jobName);
246
+ if (!allJobsByPrefix['deploy']) {
247
+ allJobsByPrefix['deploy'] = [];
248
+ }
249
+ allJobsByPrefix['deploy'].push(jobName);
250
+ }
251
+ if (domainConfig.remoteTestable === true) {
252
+ const jobName = `remote-test-${domain}`;
253
+ remoteTestJobs.push(jobName);
254
+ if (!allJobsByPrefix['remote-test']) {
255
+ allJobsByPrefix['remote-test'] = [];
256
+ }
257
+ allJobsByPrefix['remote-test'].push(jobName);
258
+ }
259
+ }
260
+ });
261
+ return { testJobs, deployJobs, remoteTestJobs, allJobsByPrefix };
137
262
  }
138
263
  //# sourceMappingURL=operations-domain-jobs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operations-domain-jobs.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-domain-jobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations-domain-jobs.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-domain-jobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Document } from 'yaml';
2
+ export interface EnsureGateOptions {
3
+ force: boolean;
4
+ }
5
+ export declare function ensureGateJob(doc: Document.Parsed, options: EnsureGateOptions): void;
6
+ //# sourceMappingURL=operations-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations-gate.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkC,MAAM,MAAM,CAAA;AAmE/D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;CACf;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,QA0E7E"}
@@ -0,0 +1,116 @@
1
+ import { Pair, Scalar, YAMLMap, YAMLSeq } from 'yaml';
2
+ import { logger } from '../../../utils/logger.js';
3
+ const GATE_COMMENT = `
4
+ =============================================================================
5
+ GATE (⚠️ Managed by Pipecraft - do not modify)
6
+ =============================================================================
7
+ Gate job that ensures prior jobs succeed before allowing tag/promote/release.
8
+ Uses pattern: allow only SUCCESS or SKIPPED results (failures block progression).
9
+ `;
10
+ const DEFAULT_GATE_STEP_RUN = 'echo "All prerequisite jobs succeeded or were skipped - gate allows progression"';
11
+ function toKeyString(key) {
12
+ if (key instanceof Scalar) {
13
+ return typeof key.value === 'string' ? key.value : String(key.value);
14
+ }
15
+ return String(key);
16
+ }
17
+ function buildNeedsSequence(jobNames) {
18
+ const seq = new YAMLSeq();
19
+ seq.items = jobNames.map(name => new Scalar(name));
20
+ return seq;
21
+ }
22
+ function buildIfExpression(jobNames) {
23
+ const clauses = jobNames.map(name => `(needs['${name}'].result == 'success' || needs['${name}'].result == 'skipped')`);
24
+ const expression = clauses.length > 0 ? `always() && ${clauses.join(' && ')}` : 'always()';
25
+ const scalar = new Scalar(`\${{ ${expression} }}`);
26
+ scalar.type = Scalar.QUOTE_DOUBLE;
27
+ return scalar;
28
+ }
29
+ function ensureDefaultRunsAndSteps(gateMap) {
30
+ if (!gateMap.has('runs-on')) {
31
+ gateMap.set('runs-on', new Scalar('ubuntu-latest'));
32
+ }
33
+ if (!gateMap.has('steps')) {
34
+ const stepsSeq = new YAMLSeq();
35
+ const stepMap = new YAMLMap();
36
+ stepMap.set('name', new Scalar('Gate passed'));
37
+ stepMap.set('run', new Scalar(DEFAULT_GATE_STEP_RUN));
38
+ stepsSeq.items = [stepMap];
39
+ gateMap.set('steps', stepsSeq);
40
+ }
41
+ }
42
+ function dedupePreserveOrder(values) {
43
+ const seen = new Set();
44
+ const result = [];
45
+ for (const value of values) {
46
+ if (!seen.has(value)) {
47
+ seen.add(value);
48
+ result.push(value);
49
+ }
50
+ }
51
+ return result;
52
+ }
53
+ export function ensureGateJob(doc, options) {
54
+ const { force } = options;
55
+ const root = doc.contents;
56
+ if (!(root instanceof YAMLMap)) {
57
+ logger.warn('⚠️ Unable to update gate job - root YAML node is not a map');
58
+ return;
59
+ }
60
+ let jobsNode = root.get('jobs');
61
+ if (!(jobsNode instanceof YAMLMap)) {
62
+ jobsNode = new YAMLMap();
63
+ const jobsPair = new Pair(new Scalar('jobs'), jobsNode);
64
+ root.items.push(jobsPair);
65
+ }
66
+ const items = jobsNode.items;
67
+ const gateIndex = items.findIndex(pair => toKeyString(pair.key) === 'gate');
68
+ const tagIndex = items.findIndex(pair => toKeyString(pair.key) === 'tag');
69
+ let gatePair;
70
+ const gateExisted = gateIndex !== -1;
71
+ if (gateExisted) {
72
+ gatePair = items[gateIndex];
73
+ }
74
+ else {
75
+ const insertionIndex = tagIndex !== -1 ? tagIndex : items.length;
76
+ gatePair = new Pair(new Scalar('gate'), new YAMLMap());
77
+ gatePair.spaceBefore = true;
78
+ gatePair.commentBefore = GATE_COMMENT.trimEnd();
79
+ items.splice(insertionIndex, 0, gatePair);
80
+ }
81
+ const currentIndex = items.indexOf(gatePair);
82
+ const priorJobs = items.slice(0, currentIndex);
83
+ // Filter out disabled jobs (those with if: false or if: ${{ false }})
84
+ const enabledPriorJobs = priorJobs.filter(pair => {
85
+ const jobMap = pair.value;
86
+ if (!(jobMap instanceof YAMLMap))
87
+ return false;
88
+ const ifCondition = jobMap.get('if');
89
+ if (!ifCondition)
90
+ return true; // No condition means enabled
91
+ // Check if explicitly disabled
92
+ const ifValue = ifCondition instanceof Scalar ? String(ifCondition.value).trim() : String(ifCondition).trim();
93
+ return ifValue !== 'false' && ifValue !== '${{ false }}';
94
+ });
95
+ const priorJobKeys = enabledPriorJobs.map(pair => toKeyString(pair.key));
96
+ const prerequisites = dedupePreserveOrder(priorJobKeys);
97
+ let gateMap = gatePair.value;
98
+ if (!(gateMap instanceof YAMLMap)) {
99
+ gateMap = new YAMLMap();
100
+ gatePair.value = gateMap;
101
+ }
102
+ if (!gatePair.commentBefore) {
103
+ ;
104
+ gatePair.commentBefore = GATE_COMMENT.trimEnd();
105
+ }
106
+ if (!gateExisted) {
107
+ ensureDefaultRunsAndSteps(gateMap);
108
+ }
109
+ const shouldUpdateControlFields = force || !gateExisted;
110
+ if (shouldUpdateControlFields) {
111
+ ;
112
+ gateMap.set('needs', buildNeedsSequence(prerequisites));
113
+ gateMap.set('if', buildIfExpression(prerequisites));
114
+ }
115
+ }
116
+ //# sourceMappingURL=operations-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations-gate.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-gate.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,19 @@
4
4
  * Generates workflow header operations (name, run-name, on triggers) that are
5
5
  * common to both Nx and path-based pipeline templates.
6
6
  */
7
- import { PathOperationConfig } from '../../../utils/ast-path-operations.js';
7
+ import type { PathOperationConfig } from '../../../utils/ast-path-operations.js';
8
8
  export interface HeaderContext {
9
9
  branchFlow: string[];
10
+ /**
11
+ * Existing node version from the pipeline, if present.
12
+ * Falls back to PipeCraft defaults when not provided.
13
+ */
14
+ nodeVersion?: string;
15
+ /**
16
+ * Existing pnpm version from the pipeline, if present.
17
+ * Falls back to PipeCraft defaults when not provided.
18
+ */
19
+ pnpmVersion?: string;
10
20
  }
11
21
  /**
12
22
  * Create workflow header operations (name, run-name, on triggers)
@@ -1 +1 @@
1
- {"version":3,"file":"operations-header.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-header.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAG3E,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,mBAAmB,EAAE,CA2JhF"}
1
+ {"version":3,"file":"operations-header.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-header.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAEhF,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,mBAAmB,EAAE,CA4NhF"}
@@ -9,10 +9,12 @@ import { Scalar } from 'yaml';
9
9
  * Create workflow header operations (name, run-name, on triggers)
10
10
  */
11
11
  export function createHeaderOperations(ctx) {
12
- const { branchFlow } = ctx;
12
+ const { branchFlow, nodeVersion, pnpmVersion } = ctx;
13
13
  // Provide sensible defaults if branchFlow is invalid
14
- const validBranchFlow = (branchFlow && Array.isArray(branchFlow) && branchFlow.length > 0) ? branchFlow : ['main'];
14
+ const validBranchFlow = branchFlow && Array.isArray(branchFlow) && branchFlow.length > 0 ? branchFlow : ['main'];
15
15
  const branchList = validBranchFlow.join(',');
16
+ const normalizedNodeVersion = typeof nodeVersion === 'string' && nodeVersion.trim().length > 0 ? nodeVersion.trim() : '22';
17
+ const normalizedPnpmVersion = typeof pnpmVersion === 'string' && pnpmVersion.trim().length > 0 ? pnpmVersion.trim() : '9';
16
18
  return [
17
19
  // =============================================================================
18
20
  // WORKFLOW NAME
@@ -20,14 +22,27 @@ export function createHeaderOperations(ctx) {
20
22
  {
21
23
  path: 'name',
22
24
  operation: 'preserve',
23
- value: (() => {
24
- const nameScalar = new Scalar('Pipeline');
25
- nameScalar.type = Scalar.QUOTE_DOUBLE;
26
- return nameScalar;
27
- })(),
25
+ value: new Scalar('Pipeline'),
28
26
  required: true
29
27
  },
30
28
  // =============================================================================
29
+ // PERMISSIONS - Required for workflow operations
30
+ // =============================================================================
31
+ // contents: write - For creating tags and pushing changes
32
+ // pull-requests: write - For creating pull requests during promotion
33
+ // actions: write - For triggering workflow_dispatch on target branches
34
+ {
35
+ path: 'permissions',
36
+ operation: 'preserve',
37
+ value: {
38
+ contents: 'write',
39
+ 'pull-requests': 'write',
40
+ actions: 'write'
41
+ },
42
+ required: true,
43
+ spaceBefore: true
44
+ },
45
+ // =============================================================================
31
46
  // RUN NAME - Display name for workflow runs
32
47
  // =============================================================================
33
48
  {
@@ -36,12 +51,56 @@ export function createHeaderOperations(ctx) {
36
51
  value: (() => {
37
52
  const runNameScalar = new Scalar(`\${{ github.event_name == 'pull_request' && !contains('${branchList}', github.head_ref) && github.event.pull_request.title || github.ref_name }} #\${{ inputs.run_number || github.run_number }}\${{ inputs.version && format(' - {0}', inputs.version) || '' }}`);
38
53
  runNameScalar.type = Scalar.QUOTE_DOUBLE;
54
+ runNameScalar.type = 'QUOTE_DOUBLE';
39
55
  return runNameScalar;
40
56
  })(),
41
57
  required: true,
42
58
  spaceBefore: true
43
59
  },
44
60
  // =============================================================================
61
+ // ENVIRONMENT VARIABLES
62
+ // =============================================================================
63
+ {
64
+ path: 'env',
65
+ operation: 'preserve',
66
+ value: {},
67
+ required: true,
68
+ spaceBefore: true,
69
+ commentBefore: `Git fetch depth configuration
70
+ - FETCH_DEPTH_AFFECTED: For change detection and Nx affected analysis
71
+ Lower values (50-100) improve performance, higher values (200+) improve accuracy
72
+ Use 0 for complete history if your branches diverge significantly
73
+ - FETCH_DEPTH_VERSIONING: For semantic version calculation (needs git tags)
74
+ Should almost always be 0 to access all tags
75
+
76
+ Runtime versions
77
+ Update these to match your project's requirements without regenerating workflows`
78
+ },
79
+ {
80
+ path: 'env.FETCH_DEPTH_AFFECTED',
81
+ operation: 'preserve',
82
+ value: new Scalar('100'),
83
+ required: true
84
+ },
85
+ {
86
+ path: 'env.FETCH_DEPTH_VERSIONING',
87
+ operation: 'preserve',
88
+ value: new Scalar('0'),
89
+ required: true
90
+ },
91
+ {
92
+ path: 'env.NODE_VERSION',
93
+ operation: 'preserve',
94
+ value: new Scalar(normalizedNodeVersion),
95
+ required: true
96
+ },
97
+ {
98
+ path: 'env.PNPM_VERSION',
99
+ operation: 'preserve',
100
+ value: new Scalar(normalizedPnpmVersion),
101
+ required: true
102
+ },
103
+ // =============================================================================
45
104
  // WORKFLOW TRIGGERS
46
105
  // =============================================================================
47
106
  {
@@ -1 +1 @@
1
- {"version":3,"file":"operations-header.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-header.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations-header.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-header.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,12 @@
3
3
  *
4
4
  * Generates the tag creation, branch promotion, and GitHub release jobs.
5
5
  */
6
- import { PathOperationConfig } from '../../../utils/ast-path-operations.js';
6
+ import { type PathOperationConfig } from '../../../utils/ast-path-operations.js';
7
+ import type { PipecraftConfig } from '../../../types/index.js';
7
8
  export interface TagPromoteContext {
8
9
  branchFlow: string[];
9
- deployJobNames: string[];
10
- remoteTestJobNames: string[];
10
+ autoPromote?: Record<string, boolean>;
11
+ config?: Partial<PipecraftConfig>;
11
12
  }
12
13
  /**
13
14
  * Create tag, promote, and release job operations
@@ -1 +1 @@
1
- {"version":3,"file":"operations-tag-promote.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-tag-promote.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAyB,MAAM,uCAAuC,CAAA;AAElG,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,EAAE,CA2F/F"}
1
+ {"version":3,"file":"operations-tag-promote.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-tag-promote.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uCAAuC,CAAA;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,EAAE,CAoJ/F"}