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.
- package/README.md +128 -54
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +68 -25
- 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 +214 -108
- 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 -36
- 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 +49 -23
- 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 +14 -8
- 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 +16 -11
- 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 +13 -9
- package/dist/templates/actions/create-tag.yml.tpl.js.map +1 -1
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts +17 -51
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/detect-changes.yml.tpl.js +130 -110
- 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 +13 -9
- 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 +39 -92
- package/dist/templates/actions/promote-branch.yml.tpl.js.map +1 -1
- 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 +38 -29
- 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.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 +337 -84
- 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 +4 -2
- package/dist/templates/workflows/shared/index.d.ts.map +1 -1
- package/dist/templates/workflows/shared/index.js +4 -2
- package/dist/templates/workflows/shared/index.js.map +1 -1
- package/dist/templates/workflows/shared/managed-workflow.d.ts +32 -0
- package/dist/templates/workflows/shared/managed-workflow.d.ts.map +1 -0
- package/dist/templates/workflows/shared/managed-workflow.js +51 -0
- package/dist/templates/workflows/shared/managed-workflow.js.map +1 -0
- package/dist/templates/workflows/shared/operations-changes.d.ts +13 -3
- package/dist/templates/workflows/shared/operations-changes.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-changes.js +42 -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 +6 -0
- package/dist/templates/workflows/shared/operations-gate.d.ts.map +1 -0
- package/dist/templates/workflows/shared/operations-gate.js +116 -0
- package/dist/templates/workflows/shared/operations-gate.js.map +1 -0
- package/dist/templates/workflows/shared/operations-header.d.ts +11 -1
- package/dist/templates/workflows/shared/operations-header.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-header.js +66 -7
- package/dist/templates/workflows/shared/operations-header.js.map +1 -1
- package/dist/templates/workflows/shared/operations-tag-promote.d.ts +4 -3
- package/dist/templates/workflows/shared/operations-tag-promote.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-tag-promote.js +144 -33
- package/dist/templates/workflows/shared/operations-tag-promote.js.map +1 -1
- package/dist/templates/workflows/shared/operations-version.d.ts +3 -2
- package/dist/templates/workflows/shared/operations-version.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-version.js +17 -16
- 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 +1 -5
- package/dist/templates/yaml-format-utils.js.map +1 -1
- package/dist/types/index.d.ts +65 -53
- 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 +16 -5
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +69 -12
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/github-setup.d.ts +7 -7
- package/dist/utils/github-setup.d.ts.map +1 -1
- package/dist/utils/github-setup.js +84 -63
- 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 +2 -2
- package/dist/utils/messaging.d.ts.map +1 -1
- package/dist/utils/messaging.js +12 -8
- 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/dist/utils/workflow-semantics.d.ts +61 -0
- package/dist/utils/workflow-semantics.d.ts.map +1 -0
- package/dist/utils/workflow-semantics.js +230 -0
- package/dist/utils/workflow-semantics.js.map +1 -0
- package/package.json +12 -4
- package/src/generators/init.tpl.ts +275 -128
- package/src/generators/workflows.tpl.ts +54 -57
- 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/templates/workflows/pipeline-nx.yml.tpl.d.ts +0 -22
- package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts.map +0 -1
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js +0 -196
- package/dist/templates/workflows/pipeline-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":"workflows.tpl.js","sourceRoot":"","sources":["../../src/generators/workflows.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;
|
|
1
|
+
{"version":3,"file":"workflows.tpl.js","sourceRoot":"","sources":["../../src/generators/workflows.tpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* ## Generated Action Location
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* `actions/calculate-version/action.yml`
|
|
19
19
|
*
|
|
20
20
|
* ## Usage in Workflows
|
|
21
21
|
*
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* outputs:
|
|
27
27
|
* version: ${{ steps.calc.outputs.version }}
|
|
28
28
|
* steps:
|
|
29
|
-
* - uses:
|
|
29
|
+
* - uses: ./actions/calculate-version
|
|
30
30
|
* id: calc
|
|
31
31
|
* with:
|
|
32
32
|
* baseRef: main
|
|
@@ -39,12 +39,15 @@
|
|
|
39
39
|
*
|
|
40
40
|
* @module templates/actions/calculate-version.yml.tpl
|
|
41
41
|
*/
|
|
42
|
-
import { PinionContext } from '@featherscloud/pinion';
|
|
42
|
+
import { type PinionContext } from '@featherscloud/pinion';
|
|
43
|
+
import type { PipecraftConfig } from '../../types/index.js';
|
|
43
44
|
/**
|
|
44
45
|
* Generator entry point for calculate-version composite action.
|
|
45
46
|
*
|
|
46
47
|
* @param {PinionContext} ctx - Pinion generator context
|
|
47
48
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
48
49
|
*/
|
|
49
|
-
export declare const generate: (ctx: PinionContext
|
|
50
|
+
export declare const generate: (ctx: PinionContext & {
|
|
51
|
+
config?: Partial<PipecraftConfig>;
|
|
52
|
+
}) => Promise<any>;
|
|
50
53
|
//# sourceMappingURL=calculate-version.yml.tpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate-version.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/calculate-version.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"calculate-version.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/calculate-version.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAIlF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAyJ3D;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAAE,iBAkB/E,CAAA"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* ## Generated Action Location
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* `actions/calculate-version/action.yml`
|
|
19
19
|
*
|
|
20
20
|
* ## Usage in Workflows
|
|
21
21
|
*
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* outputs:
|
|
27
27
|
* version: ${{ steps.calc.outputs.version }}
|
|
28
28
|
* steps:
|
|
29
|
-
* - uses:
|
|
29
|
+
* - uses: ./actions/calculate-version
|
|
30
30
|
* id: calc
|
|
31
31
|
* with:
|
|
32
32
|
* baseRef: main
|
|
@@ -39,9 +39,10 @@
|
|
|
39
39
|
*
|
|
40
40
|
* @module templates/actions/calculate-version.yml.tpl
|
|
41
41
|
*/
|
|
42
|
-
import {
|
|
42
|
+
import { renderTemplate, toFile } from '@featherscloud/pinion';
|
|
43
43
|
import fs from 'fs';
|
|
44
44
|
import { logger } from '../../utils/logger.js';
|
|
45
|
+
import { getActionOutputDir, shouldGenerateActions } from '../../utils/action-reference.js';
|
|
45
46
|
/**
|
|
46
47
|
* Generates the calculate-version composite action YAML content.
|
|
47
48
|
*
|
|
@@ -58,6 +59,14 @@ inputs:
|
|
|
58
59
|
description: 'Base reference for version calculation'
|
|
59
60
|
required: false
|
|
60
61
|
default: 'main'
|
|
62
|
+
version:
|
|
63
|
+
description: 'Pre-determined version to use (skips calculation if provided)'
|
|
64
|
+
required: false
|
|
65
|
+
default: ''
|
|
66
|
+
node-version:
|
|
67
|
+
description: 'Node.js version to use'
|
|
68
|
+
required: false
|
|
69
|
+
default: '22'
|
|
61
70
|
|
|
62
71
|
outputs:
|
|
63
72
|
version:
|
|
@@ -75,7 +84,7 @@ runs:
|
|
|
75
84
|
- name: Install Node.js
|
|
76
85
|
uses: actions/setup-node@v4
|
|
77
86
|
with:
|
|
78
|
-
node-version:
|
|
87
|
+
node-version: \${{ inputs.node-version }}
|
|
79
88
|
|
|
80
89
|
- name: Configure Git
|
|
81
90
|
shell: bash
|
|
@@ -99,8 +108,21 @@ runs:
|
|
|
99
108
|
echo "✅ Already on a branch: $(git branch --show-current)"
|
|
100
109
|
fi
|
|
101
110
|
|
|
111
|
+
- name: Check for input version
|
|
112
|
+
id: check_input_version
|
|
113
|
+
shell: bash
|
|
114
|
+
run: |
|
|
115
|
+
INPUT_VERSION="\${{ inputs.version }}"
|
|
116
|
+
if [ -n "$INPUT_VERSION" ]; then
|
|
117
|
+
echo "✅ Using provided version: $INPUT_VERSION"
|
|
118
|
+
echo "version=$INPUT_VERSION" >> $GITHUB_OUTPUT
|
|
119
|
+
else
|
|
120
|
+
echo "No input version provided, will calculate from commits"
|
|
121
|
+
fi
|
|
122
|
+
|
|
102
123
|
- name: Get existing version tag
|
|
103
124
|
id: get_version_old
|
|
125
|
+
if: steps.check_input_version.outputs.version == ''
|
|
104
126
|
shell: bash
|
|
105
127
|
run: |
|
|
106
128
|
set -x # Enable debugging output
|
|
@@ -108,11 +130,11 @@ runs:
|
|
|
108
130
|
git rev-parse HEAD
|
|
109
131
|
COMMIT_HASH=$(git rev-parse HEAD)
|
|
110
132
|
echo "Current commit hash: $COMMIT_HASH"
|
|
111
|
-
|
|
133
|
+
|
|
112
134
|
# Check for tags on the current commit
|
|
113
135
|
TAG=$(git tag --points-at $COMMIT_HASH | grep -E '^v[0-9]+\\.[0-9]+\\.[0-9]+$' || true)
|
|
114
136
|
echo "Tags found: $TAG"
|
|
115
|
-
|
|
137
|
+
|
|
116
138
|
if [ -z "$TAG" ]; then
|
|
117
139
|
echo "No existing tag found on the current commit"
|
|
118
140
|
else
|
|
@@ -128,17 +150,13 @@ runs:
|
|
|
128
150
|
"version": "0.0.0-release-it"
|
|
129
151
|
}' > package.json
|
|
130
152
|
|
|
131
|
-
- name: Install dependencies
|
|
132
|
-
shell: bash
|
|
133
|
-
run: npm install @release-it/conventional-changelog conventional-changelog-angular
|
|
134
|
-
|
|
135
153
|
- name: Get version
|
|
136
|
-
if: steps.get_version_old.outputs.version == ''
|
|
154
|
+
if: steps.check_input_version.outputs.version == '' && steps.get_version_old.outputs.version == ''
|
|
137
155
|
id: get_version_new
|
|
138
156
|
shell: bash
|
|
139
157
|
run: |
|
|
140
|
-
# Get version and filter out warnings
|
|
141
|
-
RAW_OUTPUT=$(npx release-it --ci --release-version 2>&1 || echo "")
|
|
158
|
+
# Get version and filter out warnings (install release-it & plugin on the fly)
|
|
159
|
+
RAW_OUTPUT=$(npx --yes --package release-it --package @release-it/conventional-changelog release-it --ci --release-version 2>&1 || echo "")
|
|
142
160
|
# Extract just the version number (last line that looks like a version)
|
|
143
161
|
VERSION=$(echo "$RAW_OUTPUT" | grep -E '^[0-9]+\\.[0-9]+\\.[0-9]+' | tail -1 || true)
|
|
144
162
|
|
|
@@ -156,11 +174,14 @@ runs:
|
|
|
156
174
|
id: set_version
|
|
157
175
|
shell: bash
|
|
158
176
|
run: |
|
|
159
|
-
if [ -n "\${{ steps.
|
|
160
|
-
echo "Using
|
|
177
|
+
if [ -n "\${{ steps.check_input_version.outputs.version }}" ]; then
|
|
178
|
+
echo "Using input version: \${{ steps.check_input_version.outputs.version }}"
|
|
179
|
+
echo "version=\${{ steps.check_input_version.outputs.version }}" >> $GITHUB_OUTPUT
|
|
180
|
+
elif [ -n "\${{ steps.get_version_old.outputs.version }}" ]; then
|
|
181
|
+
echo "Using tag version: \${{ steps.get_version_old.outputs.version }}"
|
|
161
182
|
echo "version=\${{ steps.get_version_old.outputs.version }}" >> $GITHUB_OUTPUT
|
|
162
183
|
elif [ -n "\${{ steps.get_version_new.outputs.version }}" ]; then
|
|
163
|
-
echo "Using
|
|
184
|
+
echo "Using calculated version: \${{ steps.get_version_new.outputs.version }}"
|
|
164
185
|
echo "version=\${{ steps.get_version_new.outputs.version }}" >> $GITHUB_OUTPUT
|
|
165
186
|
else
|
|
166
187
|
echo "No version determined"
|
|
@@ -178,14 +199,19 @@ runs:
|
|
|
178
199
|
* @param {PinionContext} ctx - Pinion generator context
|
|
179
200
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
180
201
|
*/
|
|
181
|
-
export const generate = (ctx) => Promise.resolve(ctx)
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
202
|
+
export const generate = (ctx) => Promise.resolve(ctx).then(ctx => {
|
|
203
|
+
// Determine output directory based on actionSourceMode
|
|
204
|
+
const config = ctx.config || {};
|
|
205
|
+
// Skip generation in remote mode - actions come from marketplace
|
|
206
|
+
if (!shouldGenerateActions(config)) {
|
|
207
|
+
logger.verbose('Skipping calculate-version action generation (using remote actions)');
|
|
208
|
+
return ctx;
|
|
209
|
+
}
|
|
210
|
+
const outputDir = getActionOutputDir(config);
|
|
211
|
+
const filePath = `${outputDir}/calculate-version/action.yml`;
|
|
185
212
|
const exists = fs.existsSync(filePath);
|
|
186
213
|
const status = exists ? '🔄 Merged with existing' : '📝 Created new';
|
|
187
214
|
logger.verbose(`${status} ${filePath}`);
|
|
188
|
-
return ctx;
|
|
189
|
-
})
|
|
190
|
-
.then(renderTemplate(versionActionTemplate, toFile('.github/actions/calculate-version/action.yml')));
|
|
215
|
+
return renderTemplate(versionActionTemplate, toFile(filePath))(ctx);
|
|
216
|
+
});
|
|
191
217
|
//# sourceMappingURL=calculate-version.yml.tpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate-version.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/calculate-version.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"calculate-version.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/calculate-version.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAsB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAG3F;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,GAAQ,EAAE,EAAE;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EA6IoE,CAAA;AAC7E,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAA0D,EAAE,EAAE,CACrF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC9B,uDAAuD;IACvD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;IAE/B,iEAAiE;IACjE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,qEAAqE,CAAC,CAAA;QACrF,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,GAAG,SAAS,+BAA+B,CAAA;IAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,CAAA;IACpE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAA;IAEvC,OAAO,cAAc,CAAC,qBAAqB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACrE,CAAC,CAAC,CAAA"}
|
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module templates/actions/create-pr.yml.tpl
|
|
8
8
|
*/
|
|
9
|
-
import { PinionContext } from '@featherscloud/pinion';
|
|
9
|
+
import { type PinionContext } from '@featherscloud/pinion';
|
|
10
|
+
import type { PipecraftConfig } from '../../types/index.js';
|
|
10
11
|
/**
|
|
11
12
|
* Generator entry point for create-pr composite action.
|
|
12
13
|
*
|
|
13
14
|
* @param {PinionContext} ctx - Pinion generator context
|
|
14
15
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
15
16
|
*/
|
|
16
|
-
export declare const generate: (ctx: PinionContext
|
|
17
|
+
export declare const generate: (ctx: PinionContext & {
|
|
18
|
+
config?: Partial<PipecraftConfig>;
|
|
19
|
+
}) => Promise<any>;
|
|
17
20
|
//# sourceMappingURL=create-pr.yml.tpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pr.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/create-pr.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"create-pr.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/create-pr.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAKlF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AA2I3D;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAAE,iBAiB/E,CAAA"}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module templates/actions/create-pr.yml.tpl
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
10
|
-
import fs from 'fs';
|
|
9
|
+
import { renderTemplate, toFile } from '@featherscloud/pinion';
|
|
11
10
|
import dedent from 'dedent';
|
|
11
|
+
import fs from 'fs';
|
|
12
12
|
import { logger } from '../../utils/logger.js';
|
|
13
|
+
import { getActionOutputDir, shouldGenerateActions } from '../../utils/action-reference.js';
|
|
13
14
|
/**
|
|
14
15
|
* Generates the create-pr composite action YAML content.
|
|
15
16
|
*
|
|
@@ -152,14 +153,19 @@ const createprActionTemplate = (ctx) => {
|
|
|
152
153
|
* @param {PinionContext} ctx - Pinion generator context
|
|
153
154
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
154
155
|
*/
|
|
155
|
-
export const generate = (ctx) => Promise.resolve(ctx)
|
|
156
|
-
.then((ctx) => {
|
|
156
|
+
export const generate = (ctx) => Promise.resolve(ctx).then(ctx => {
|
|
157
157
|
// Check if file exists to determine merge status
|
|
158
|
-
const
|
|
158
|
+
const config = ctx.config || {};
|
|
159
|
+
// Skip generation in remote mode - actions come from marketplace
|
|
160
|
+
if (!shouldGenerateActions(config)) {
|
|
161
|
+
logger.verbose('Skipping create-pr action generation (using remote actions)');
|
|
162
|
+
return ctx;
|
|
163
|
+
}
|
|
164
|
+
const outputDir = getActionOutputDir(config);
|
|
165
|
+
const filePath = `${outputDir}/create-pr/action.yml`;
|
|
159
166
|
const exists = fs.existsSync(filePath);
|
|
160
167
|
const status = exists ? '🔄 Merged with existing' : '📝 Created new';
|
|
161
168
|
logger.verbose(`${status} ${filePath}`);
|
|
162
|
-
return ctx;
|
|
163
|
-
})
|
|
164
|
-
.then(renderTemplate(createprActionTemplate, toFile('.github/actions/create-pr/action.yml')));
|
|
169
|
+
return renderTemplate(createprActionTemplate, toFile(filePath))(ctx);
|
|
170
|
+
});
|
|
165
171
|
//# sourceMappingURL=create-pr.yml.tpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pr.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/create-pr.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"create-pr.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/create-pr.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAsB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAG3F;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG,CAAC,GAAQ,EAAE,EAAE;IAC1C,OAAO,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA+HA,CAAA;AACf,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAA0D,EAAE,EAAE,CACrF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC9B,iDAAiD;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;IAE/B,iEAAiE;IACjE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAA;QAC7E,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,GAAG,SAAS,uBAAuB,CAAA;IACpD,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,CAAA;IACpE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAA;IAEvC,OAAO,cAAc,CAAC,sBAAsB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACtE,CAAC,CAAC,CAAA"}
|
|
@@ -7,12 +7,15 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module templates/actions/create-release.yml.tpl
|
|
9
9
|
*/
|
|
10
|
-
import { PinionContext } from '@featherscloud/pinion';
|
|
10
|
+
import { type PinionContext } from '@featherscloud/pinion';
|
|
11
|
+
import type { PipecraftConfig } from '../../types/index.js';
|
|
11
12
|
/**
|
|
12
13
|
* Generator entry point for create-release composite action.
|
|
13
14
|
*
|
|
14
15
|
* @param {PinionContext} ctx - Pinion generator context
|
|
15
16
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
16
17
|
*/
|
|
17
|
-
export declare const generate: (ctx: PinionContext
|
|
18
|
+
export declare const generate: (ctx: PinionContext & {
|
|
19
|
+
config?: Partial<PipecraftConfig>;
|
|
20
|
+
}) => Promise<any>;
|
|
18
21
|
//# sourceMappingURL=create-release.yml.tpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-release.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/create-release.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"create-release.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/create-release.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAKlF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAmH3D;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAAE,iBAgB/E,CAAA"}
|
|
@@ -7,10 +7,11 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module templates/actions/create-release.yml.tpl
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import fs from 'fs';
|
|
10
|
+
import { renderTemplate, toFile } from '@featherscloud/pinion';
|
|
12
11
|
import dedent from 'dedent';
|
|
12
|
+
import fs from 'fs';
|
|
13
13
|
import { logger } from '../../utils/logger.js';
|
|
14
|
+
import { getActionOutputDir, shouldGenerateActions } from '../../utils/action-reference.js';
|
|
14
15
|
/**
|
|
15
16
|
* Generates the create-release composite action YAML content.
|
|
16
17
|
*
|
|
@@ -109,9 +110,10 @@ const releaseActionTemplate = (ctx) => {
|
|
|
109
110
|
if [ -f ".github/workflows/$PUBLISH_WORKFLOW" ]; then
|
|
110
111
|
echo "🔄 Triggering $PUBLISH_WORKFLOW for $VERSION"
|
|
111
112
|
|
|
112
|
-
# Trigger the publish workflow with the release tag
|
|
113
|
+
# Trigger the publish workflow with the release tag on main branch
|
|
113
114
|
# This is necessary because GITHUB_TOKEN release creation doesn't trigger workflows
|
|
114
|
-
|
|
115
|
+
# Explicitly use --ref main to ensure it runs on main, not the default branch (develop)
|
|
116
|
+
if gh workflow run "$PUBLISH_WORKFLOW" --ref main --field tag="$VERSION" 2>&1; then
|
|
115
117
|
echo "✅ Publish workflow triggered for $VERSION"
|
|
116
118
|
else
|
|
117
119
|
echo "⚠️ Failed to trigger publish workflow, but continuing"
|
|
@@ -128,14 +130,17 @@ const releaseActionTemplate = (ctx) => {
|
|
|
128
130
|
* @param {PinionContext} ctx - Pinion generator context
|
|
129
131
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
130
132
|
*/
|
|
131
|
-
export const generate = (ctx) => Promise.resolve(ctx)
|
|
132
|
-
.
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
export const generate = (ctx) => Promise.resolve(ctx).then(ctx => {
|
|
134
|
+
const config = ctx.config || {};
|
|
135
|
+
if (!shouldGenerateActions(config)) {
|
|
136
|
+
logger.verbose('Skipping create-release action generation (using remote actions)');
|
|
137
|
+
return ctx;
|
|
138
|
+
}
|
|
139
|
+
const outputDir = getActionOutputDir(config);
|
|
140
|
+
const filePath = `${outputDir}/create-release/action.yml`;
|
|
135
141
|
const exists = fs.existsSync(filePath);
|
|
136
142
|
const status = exists ? '🔄 Merged with existing' : '📝 Created new';
|
|
137
143
|
logger.verbose(`${status} ${filePath}`);
|
|
138
|
-
return ctx;
|
|
139
|
-
})
|
|
140
|
-
.then(renderTemplate(releaseActionTemplate, toFile('.github/actions/create-release/action.yml')));
|
|
144
|
+
return renderTemplate(releaseActionTemplate, toFile(filePath))(ctx);
|
|
145
|
+
});
|
|
141
146
|
//# sourceMappingURL=create-release.yml.tpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-release.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/create-release.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"create-release.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/create-release.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAsB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAG3F;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,GAAQ,EAAE,EAAE;IACzC,OAAO,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAuGA,CAAA;AACf,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAA0D,EAAE,EAAE,CACrF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;IAE/B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAA;QAClF,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,GAAG,SAAS,4BAA4B,CAAA;IACzD,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,CAAA;IACpE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAA;IAEvC,OAAO,cAAc,CAAC,qBAAqB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACrE,CAAC,CAAC,CAAA"}
|
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module templates/actions/create-tag.yml.tpl
|
|
8
8
|
*/
|
|
9
|
-
import { PinionContext } from '@featherscloud/pinion';
|
|
9
|
+
import { type PinionContext } from '@featherscloud/pinion';
|
|
10
|
+
import type { PipecraftConfig } from '../../types/index.js';
|
|
10
11
|
/**
|
|
11
12
|
* Generator entry point for create-tag composite action.
|
|
12
13
|
*
|
|
13
14
|
* @param {PinionContext} ctx - Pinion generator context
|
|
14
15
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
15
16
|
*/
|
|
16
|
-
export declare const generate: (ctx: PinionContext
|
|
17
|
+
export declare const generate: (ctx: PinionContext & {
|
|
18
|
+
config?: Partial<PipecraftConfig>;
|
|
19
|
+
}) => Promise<any>;
|
|
17
20
|
//# sourceMappingURL=create-tag.yml.tpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-tag.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/create-tag.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"create-tag.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/create-tag.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAKlF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAyG3D;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAAE,iBAgB/E,CAAA"}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module templates/actions/create-tag.yml.tpl
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
10
|
-
import fs from 'fs';
|
|
9
|
+
import { renderTemplate, toFile } from '@featherscloud/pinion';
|
|
11
10
|
import dedent from 'dedent';
|
|
11
|
+
import fs from 'fs';
|
|
12
12
|
import { logger } from '../../utils/logger.js';
|
|
13
|
+
import { getActionOutputDir, shouldGenerateActions } from '../../utils/action-reference.js';
|
|
13
14
|
/**
|
|
14
15
|
* Generates the create-tag composite action YAML content.
|
|
15
16
|
*
|
|
@@ -118,14 +119,17 @@ const tagActionTemplate = (ctx) => {
|
|
|
118
119
|
* @param {PinionContext} ctx - Pinion generator context
|
|
119
120
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
120
121
|
*/
|
|
121
|
-
export const generate = (ctx) => Promise.resolve(ctx)
|
|
122
|
-
.
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
export const generate = (ctx) => Promise.resolve(ctx).then(ctx => {
|
|
123
|
+
const config = ctx.config || {};
|
|
124
|
+
if (!shouldGenerateActions(config)) {
|
|
125
|
+
logger.verbose('Skipping create-tag action generation (using remote actions)');
|
|
126
|
+
return ctx;
|
|
127
|
+
}
|
|
128
|
+
const outputDir = getActionOutputDir(config);
|
|
129
|
+
const filePath = `${outputDir}/create-tag/action.yml`;
|
|
125
130
|
const exists = fs.existsSync(filePath);
|
|
126
131
|
const status = exists ? '🔄 Merged with existing' : '📝 Created new';
|
|
127
132
|
logger.verbose(`${status} ${filePath}`);
|
|
128
|
-
return ctx;
|
|
129
|
-
})
|
|
130
|
-
.then(renderTemplate(tagActionTemplate, toFile('.github/actions/create-tag/action.yml')));
|
|
133
|
+
return renderTemplate(tagActionTemplate, toFile(filePath))(ctx);
|
|
134
|
+
});
|
|
131
135
|
//# sourceMappingURL=create-tag.yml.tpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-tag.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/create-tag.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"create-tag.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/create-tag.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAsB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAG3F;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,GAAQ,EAAE,EAAE;IACrC,OAAO,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA6FA,CAAA;AACf,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAA0D,EAAE,EAAE,CACrF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;IAE/B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAA;QAC9E,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,GAAG,SAAS,wBAAwB,CAAA;IACrD,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,CAAA;IACpE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAA;IAEvC,OAAO,cAAc,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAC,CAAA"}
|
|
@@ -1,73 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Detect Changes Action Template
|
|
3
3
|
*
|
|
4
|
-
* Generates a GitHub composite action that detects which domains
|
|
5
|
-
*
|
|
6
|
-
* conditional workflow execution.
|
|
4
|
+
* Generates a REUSABLE GitHub composite action that detects which domains have changed
|
|
5
|
+
* using path-based change detection with dorny/paths-filter.
|
|
7
6
|
*
|
|
8
7
|
* ## Purpose
|
|
9
8
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* This action is **configuration-driven** and accepts domain definitions as YAML input,
|
|
10
|
+
* making it truly reusable across any project without regeneration.
|
|
11
|
+
* It uses path filters to detect which domains changed based on file glob patterns.
|
|
13
12
|
*
|
|
14
|
-
* ##
|
|
13
|
+
* ## Key Design Principle
|
|
15
14
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* 3. Outputs a boolean for each domain (true if changed, false if not)
|
|
19
|
-
* 4. Logs results for debugging
|
|
15
|
+
* **Domains are passed as input, not hardcoded in the action.**
|
|
16
|
+
* This allows the same action to work with any domain configuration without regeneration.
|
|
20
17
|
*
|
|
21
18
|
* ## Generated Action Location
|
|
22
19
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* ## Usage in Workflows
|
|
26
|
-
*
|
|
27
|
-
* ```yaml
|
|
28
|
-
* jobs:
|
|
29
|
-
* changes:
|
|
30
|
-
* runs-on: ubuntu-latest
|
|
31
|
-
* outputs:
|
|
32
|
-
* api: ${{ steps.changes.outputs.api }}
|
|
33
|
-
* web: ${{ steps.changes.outputs.web }}
|
|
34
|
-
* steps:
|
|
35
|
-
* - uses: ./.github/actions/detect-changes
|
|
36
|
-
* id: changes
|
|
37
|
-
* with:
|
|
38
|
-
* baseRef: main
|
|
39
|
-
*
|
|
40
|
-
* test-api:
|
|
41
|
-
* needs: changes
|
|
42
|
-
* if: needs.changes.outputs.api == 'true'
|
|
43
|
-
* # Only runs if API domain changed
|
|
44
|
-
* ```
|
|
20
|
+
* `actions/detect-changes/action.yml`
|
|
45
21
|
*
|
|
46
22
|
* @module templates/actions/detect-changes.yml.tpl
|
|
47
23
|
*/
|
|
48
|
-
import { PinionContext } from '@featherscloud/pinion';
|
|
24
|
+
import { type PinionContext } from '@featherscloud/pinion';
|
|
25
|
+
import type { PipecraftConfig } from '../../types/index.js';
|
|
49
26
|
/**
|
|
50
27
|
* Generator entry point for detect-changes composite action.
|
|
51
28
|
*
|
|
52
|
-
* Generates the
|
|
53
|
-
* change detection logic. This action
|
|
54
|
-
*
|
|
29
|
+
* Generates the \`actions/detect-changes/action.yml\` file with configuration-driven
|
|
30
|
+
* change detection logic. This action accepts domain configuration as input at runtime,
|
|
31
|
+
* making it truly reusable without regeneration.
|
|
55
32
|
*
|
|
56
33
|
* @param {PinionContext} ctx - Pinion generator context
|
|
57
|
-
* @param {Record<string, DomainConfig>} ctx.domains - Domain configurations
|
|
58
34
|
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```typescript
|
|
62
|
-
* await generate({
|
|
63
|
-
* cwd: '/path/to/project',
|
|
64
|
-
* domains: {
|
|
65
|
-
* api: { paths: ['src/api/**'], description: 'API' },
|
|
66
|
-
* web: { paths: ['src/web/**'], description: 'Web' }
|
|
67
|
-
* }
|
|
68
|
-
* })
|
|
69
|
-
* // Creates: .github/actions/detect-changes/action.yml
|
|
70
|
-
* ```
|
|
71
35
|
*/
|
|
72
|
-
export declare const generate: (ctx: PinionContext
|
|
36
|
+
export declare const generate: (ctx: PinionContext & {
|
|
37
|
+
config?: Partial<PipecraftConfig>;
|
|
38
|
+
}) => Promise<any>;
|
|
73
39
|
//# sourceMappingURL=detect-changes.yml.tpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-changes.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/detect-changes.yml.tpl.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"detect-changes.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/detect-changes.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAIlF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAmJ3D;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAAE,iBAgB/E,CAAA"}
|