pipecraft 0.26.0 → 0.28.0
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 +89 -992
- package/dist/cli/index.js +17 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/generators/init.tpl.d.ts.map +1 -1
- package/dist/generators/init.tpl.js +14 -2
- package/dist/generators/init.tpl.js.map +1 -1
- package/dist/generators/workflows.tpl.d.ts +3 -1
- package/dist/generators/workflows.tpl.d.ts.map +1 -1
- package/dist/generators/workflows.tpl.js +17 -3
- package/dist/generators/workflows.tpl.js.map +1 -1
- package/dist/templates/release-it.cjs.tpl.d.ts +41 -0
- package/dist/templates/release-it.cjs.tpl.d.ts.map +1 -0
- package/dist/templates/release-it.cjs.tpl.js +149 -0
- package/dist/templates/release-it.cjs.tpl.js.map +1 -0
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts +53 -0
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts.map +1 -0
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.js +83 -0
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.js.map +1 -0
- package/dist/templates/workflows/pipeline-path-based.yml.tpl.js +14 -14
- package/dist/templates/workflows/pipeline-path-based.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts +52 -0
- package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts.map +1 -0
- package/dist/templates/workflows/pr-title-check.yml.tpl.js +123 -0
- package/dist/templates/workflows/pr-title-check.yml.tpl.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/github-setup-v2.d.ts +15 -0
- package/dist/utils/github-setup-v2.d.ts.map +1 -0
- package/dist/utils/github-setup-v2.js +217 -0
- package/dist/utils/github-setup-v2.js.map +1 -0
- package/dist/utils/github-setup.d.ts.map +1 -1
- package/dist/utils/github-setup.js +35 -21
- package/dist/utils/github-setup.js.map +1 -1
- package/dist/utils/messaging.d.ts +92 -0
- package/dist/utils/messaging.d.ts.map +1 -0
- package/dist/utils/messaging.js +232 -0
- package/dist/utils/messaging.js.map +1 -0
- package/dist/utils/preflight.d.ts.map +1 -1
- package/dist/utils/preflight.js +48 -6
- package/dist/utils/preflight.js.map +1 -1
- package/dist/utils/versioning.d.ts.map +1 -1
- package/dist/utils/versioning.js +3 -13
- package/dist/utils/versioning.js.map +1 -1
- package/package.json +24 -5
- package/src/generators/init.tpl.ts +230 -0
- package/src/generators/workflows.tpl.ts +187 -0
package/dist/utils/preflight.js
CHANGED
|
@@ -420,13 +420,29 @@ export function formatPreflightResults(checks) {
|
|
|
420
420
|
const nextSteps = allPassed ? [
|
|
421
421
|
'Your environment is ready to generate workflows!',
|
|
422
422
|
'',
|
|
423
|
-
'Next steps:',
|
|
424
|
-
' 1. Validate the pipeline: pipecraft validate:pipeline',
|
|
425
|
-
' 2. Set up GitHub tokens: pipecraft setup-github --verify',
|
|
426
|
-
' 3. Commit the generated workflows: git add .github && git commit -m "chore: add workflows"',
|
|
427
|
-
' 4. Push to remote: git push origin ' + getCurrentBranch(),
|
|
423
|
+
'📋 Next steps:',
|
|
428
424
|
'',
|
|
429
|
-
'
|
|
425
|
+
'1. Review and customize the generated workflows:',
|
|
426
|
+
' - Add test commands to test-* jobs',
|
|
427
|
+
' - Add deployment logic to deploy-* jobs (if deployable: true)',
|
|
428
|
+
' - Add remote tests to remote-test-* jobs (if remoteTestable: true)',
|
|
429
|
+
'',
|
|
430
|
+
'2. Validate the workflow syntax:',
|
|
431
|
+
' npm run validate:pipeline # Check YAML is valid',
|
|
432
|
+
'',
|
|
433
|
+
'3. Configure GitHub permissions for auto-merge:',
|
|
434
|
+
' pipecraft setup-github # Interactive setup',
|
|
435
|
+
' pipecraft setup-github --apply # Auto-apply (no prompts)',
|
|
436
|
+
'',
|
|
437
|
+
'4. Commit and push:',
|
|
438
|
+
' git add .github/workflows/ .pipecraftrc.json',
|
|
439
|
+
' git commit -m "feat: add pipecraft workflows"',
|
|
440
|
+
' git push',
|
|
441
|
+
'',
|
|
442
|
+
'5. Watch your first pipeline run at:',
|
|
443
|
+
` https://github.com/${getRepoInfo()}/actions`,
|
|
444
|
+
'',
|
|
445
|
+
'⚠️ Important: Set up GitHub permissions (step 3) BEFORE pushing to ensure workflows run correctly!'
|
|
430
446
|
] : undefined;
|
|
431
447
|
return {
|
|
432
448
|
allPassed,
|
|
@@ -458,4 +474,30 @@ function getCurrentBranch() {
|
|
|
458
474
|
return 'main';
|
|
459
475
|
}
|
|
460
476
|
}
|
|
477
|
+
/**
|
|
478
|
+
* Get repository information for GitHub Actions URL.
|
|
479
|
+
*
|
|
480
|
+
* Extracts owner and repository name from git remote URL.
|
|
481
|
+
* Falls back to placeholder if not a GitHub repository.
|
|
482
|
+
*
|
|
483
|
+
* @returns Repository info in format "owner/repo" or placeholder
|
|
484
|
+
* @private
|
|
485
|
+
*/
|
|
486
|
+
function getRepoInfo() {
|
|
487
|
+
try {
|
|
488
|
+
const remote = execSync('git remote get-url origin', {
|
|
489
|
+
stdio: ['pipe', 'pipe', 'ignore'], // Suppress stderr
|
|
490
|
+
encoding: 'utf8'
|
|
491
|
+
}).trim();
|
|
492
|
+
// Extract owner/repo from GitHub URL
|
|
493
|
+
const match = remote.match(/github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
494
|
+
if (match) {
|
|
495
|
+
return `${match[1]}/${match[2]}`;
|
|
496
|
+
}
|
|
497
|
+
return 'your-username/your-repo';
|
|
498
|
+
}
|
|
499
|
+
catch (error) {
|
|
500
|
+
return 'your-username/your-repo';
|
|
501
|
+
}
|
|
502
|
+
}
|
|
461
503
|
//# sourceMappingURL=preflight.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAInC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBAAuB,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAInC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBAAuB,IAAI,MAAM;IA6DjC;;;;;;;;;;;;;;;OAeG;IACH,wBAAwB,IAAI,MAAM;IA8BlC;;;;;;;;OAQG;IACH,mBAAmB,IAAI,MAAM;IAO7B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,sBAAsB,IAAI,IAAI;IAkC9B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,2BAA2B,IAAI,OAAO;IAkBtC;;;;;;;;;;;;;OAaG;IACH,iBAAiB,IAAI,MAAM;IAa3B;;;;;;;;;;;;;;;OAeG;IACH,oBAAoB,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAwB1D"}
|
package/dist/utils/versioning.js
CHANGED
|
@@ -93,19 +93,9 @@ export class VersionManager {
|
|
|
93
93
|
plugins: {
|
|
94
94
|
"@release-it/conventional-changelog": {
|
|
95
95
|
whatBump: (commits, options) => {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
ci: 'patch',
|
|
100
|
-
docs: 'patch',
|
|
101
|
-
chore: 'minor',
|
|
102
|
-
style: 'patch',
|
|
103
|
-
fix: 'patch',
|
|
104
|
-
perf: 'patch',
|
|
105
|
-
refactor: 'patch',
|
|
106
|
-
feat: 'minor',
|
|
107
|
-
major: 'major',
|
|
108
|
-
};
|
|
96
|
+
// Import DEFAULT_PREFIXES from the release-it config
|
|
97
|
+
const { DEFAULT_PREFIXES } = require('../../.release-it.cjs');
|
|
98
|
+
const defaults = DEFAULT_PREFIXES;
|
|
109
99
|
// Merge with user-defined bump rules
|
|
110
100
|
const bumpRules = { ...defaults, ...this.config.versioning?.bumpRules };
|
|
111
101
|
let breakings = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioning.js","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,CAAiB;IAE/B;;;;OAIG;IACH,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBAAuB;QACrB,MAAM,aAAa,GAAG;YACpB,GAAG,EAAE;gBACH,sBAAsB,EAAE,KAAK;gBAC7B,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,CAAC,QAAQ,CAAC;gBACpB,QAAQ,EAAE,uBAAuB;aAClC;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,KAAK;aACf;YACD,GAAG,EAAE;gBACH,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,IAAI;aACjB;YACD,KAAK,EAAE;gBACL,eAAe,EAAE,oCAAoC;aACtD;YACD,OAAO,EAAE;gBACP,oCAAoC,EAAE;oBACpC,QAAQ,EAAE,CAAC,OAAc,EAAE,OAAY,EAAE,EAAE;wBACzC,
|
|
1
|
+
{"version":3,"file":"versioning.js","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pipecraft",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.28.0",
|
|
4
|
+
"description": "Automated CI/CD pipeline generator for trunk-based development. Generates intelligent GitHub Actions workflows with domain-based change detection, semantic versioning, and branch flow management. Full documentation: https://pipecraft.thecraftlab.dev",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -9,12 +9,31 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
+
"src/generators",
|
|
12
13
|
"README.md"
|
|
13
14
|
],
|
|
14
15
|
"repository": {
|
|
15
16
|
"type": "git",
|
|
16
17
|
"url": "https://github.com/jamesvillarrubia/pipecraft.git"
|
|
17
18
|
},
|
|
19
|
+
"homepage": "https://pipecraft.thecraftlab.dev",
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/jamesvillarrubia/pipecraft/issues"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"ci-cd",
|
|
25
|
+
"github-actions",
|
|
26
|
+
"trunk-based-development",
|
|
27
|
+
"pipeline",
|
|
28
|
+
"workflow",
|
|
29
|
+
"monorepo",
|
|
30
|
+
"semantic-versioning",
|
|
31
|
+
"automation",
|
|
32
|
+
"devops",
|
|
33
|
+
"continuous-integration",
|
|
34
|
+
"continuous-deployment",
|
|
35
|
+
"workflow-generator"
|
|
36
|
+
],
|
|
18
37
|
"publishConfig": {
|
|
19
38
|
"access": "public"
|
|
20
39
|
},
|
|
@@ -48,7 +67,6 @@
|
|
|
48
67
|
"devDependencies": {
|
|
49
68
|
"@eslint/eslintrc": "^3.3.1",
|
|
50
69
|
"@eslint/js": "^9.24.0",
|
|
51
|
-
"@featherscloud/pinion": "^0.5.5",
|
|
52
70
|
"@release-it/conventional-changelog": "^10.0.0",
|
|
53
71
|
"@typescript-eslint/eslint-plugin": "^8.30.1",
|
|
54
72
|
"@typescript-eslint/parser": "^8.30.1",
|
|
@@ -56,9 +74,7 @@
|
|
|
56
74
|
"@vitest/coverage-v8": "^2.1.9",
|
|
57
75
|
"@vitest/ui": "^2.1.8",
|
|
58
76
|
"c8": "^10.1.3",
|
|
59
|
-
"commander": "^14.0.1",
|
|
60
77
|
"conventional-changelog-angular": "latest",
|
|
61
|
-
"cosmiconfig": "^9.0.0",
|
|
62
78
|
"docusaurus-plugin-typedoc": "^1.4.2",
|
|
63
79
|
"eslint": "^9.24.0",
|
|
64
80
|
"eslint-plugin-import": "^2.31.0",
|
|
@@ -73,6 +89,9 @@
|
|
|
73
89
|
"vitest": "^2.1.8"
|
|
74
90
|
},
|
|
75
91
|
"dependencies": {
|
|
92
|
+
"@featherscloud/pinion": "^0.5.5",
|
|
93
|
+
"commander": "^14.0.1",
|
|
94
|
+
"cosmiconfig": "^9.0.0",
|
|
76
95
|
"dedent": "^1.7.0",
|
|
77
96
|
"yaml": "^2.8.1"
|
|
78
97
|
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Template Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates the initial PipeCraft configuration file (.pipecraftrc.json) with default settings.
|
|
5
|
+
* This generator is invoked by the `pipecraft init` command and prompts the user for
|
|
6
|
+
* basic project configuration preferences.
|
|
7
|
+
*
|
|
8
|
+
* @module generators/init.tpl
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { generate } from './generators/init.tpl.js'
|
|
13
|
+
*
|
|
14
|
+
* // Called by CLI with Pinion context
|
|
15
|
+
* await generate(pinionContext)
|
|
16
|
+
*
|
|
17
|
+
* // Creates .pipecraftrc.json with:
|
|
18
|
+
* // - CI provider (GitHub/GitLab)
|
|
19
|
+
* // - Merge strategy (fast-forward/merge)
|
|
20
|
+
* // - Branch flow configuration
|
|
21
|
+
* // - Domain-based change detection
|
|
22
|
+
* // - Semantic versioning rules
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @note Current Implementation: The generator currently uses hardcoded defaults
|
|
26
|
+
* from `defaultConfig` regardless of user prompt responses. This is intentional
|
|
27
|
+
* for the initial release to ensure consistent behavior. Future versions will
|
|
28
|
+
* respect user input and allow customization.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import { PinionContext, toFile, renderTemplate, prompt, when, writeJSON } from '@featherscloud/pinion'
|
|
32
|
+
import { existsSync } from 'fs'
|
|
33
|
+
import { IdempotencyManager } from '../utils/idempotency.js'
|
|
34
|
+
import { VersionManager } from '../utils/versioning.js'
|
|
35
|
+
import { PipecraftConfig } from '../types/index.js'
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Default PipeCraft configuration for new projects.
|
|
39
|
+
*
|
|
40
|
+
* Provides a complete, working trunk-based development workflow with:
|
|
41
|
+
* - GitHub Actions CI/CD
|
|
42
|
+
* - Fast-forward merge strategy
|
|
43
|
+
* - Develop → Staging → Main branch flow
|
|
44
|
+
* - Conventional commits enforcement
|
|
45
|
+
* - Semantic versioning with standard bump rules
|
|
46
|
+
* - Domain-based change detection for monorepos
|
|
47
|
+
*
|
|
48
|
+
* @const
|
|
49
|
+
*/
|
|
50
|
+
const defaultConfig = {
|
|
51
|
+
ciProvider: 'github' as const,
|
|
52
|
+
mergeStrategy: 'fast-forward' as const,
|
|
53
|
+
requireConventionalCommits: true,
|
|
54
|
+
initialBranch: 'develop',
|
|
55
|
+
finalBranch: 'main',
|
|
56
|
+
branchFlow: ['develop', 'staging', 'main'],
|
|
57
|
+
autoMerge: {
|
|
58
|
+
staging: true,
|
|
59
|
+
main: true
|
|
60
|
+
},
|
|
61
|
+
semver: {
|
|
62
|
+
bumpRules: {
|
|
63
|
+
feat: 'minor',
|
|
64
|
+
fix: 'patch',
|
|
65
|
+
breaking: 'major'
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
domains: {
|
|
69
|
+
api: {
|
|
70
|
+
paths: ['apps/api/**'],
|
|
71
|
+
description: 'API application changes'
|
|
72
|
+
},
|
|
73
|
+
web: {
|
|
74
|
+
paths: ['apps/web/**'],
|
|
75
|
+
description: 'Web application changes'
|
|
76
|
+
},
|
|
77
|
+
libs: {
|
|
78
|
+
paths: ['libs/**'],
|
|
79
|
+
description: 'Shared library changes'
|
|
80
|
+
},
|
|
81
|
+
cicd: {
|
|
82
|
+
paths: ['.github/workflows/**'],
|
|
83
|
+
description: 'CI/CD configuration changes'
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Generates a JSON string representation of the PipeCraft configuration.
|
|
90
|
+
*
|
|
91
|
+
* Serializes the configuration object with proper formatting (2-space indentation)
|
|
92
|
+
* for writing to .pipecraftrc.json file.
|
|
93
|
+
*
|
|
94
|
+
* @param {PipecraftConfig} ctx - The configuration context to serialize
|
|
95
|
+
* @returns {string} JSON string representation of the configuration
|
|
96
|
+
*
|
|
97
|
+
* @note The function extracts specific fields from the context to ensure
|
|
98
|
+
* only valid configuration properties are included in the output file.
|
|
99
|
+
*/
|
|
100
|
+
const configTemplate = (ctx: PipecraftConfig) => {
|
|
101
|
+
const config = {
|
|
102
|
+
ciProvider: ctx.ciProvider,
|
|
103
|
+
mergeStrategy: ctx.mergeStrategy,
|
|
104
|
+
requireConventionalCommits: ctx.requireConventionalCommits,
|
|
105
|
+
initialBranch: ctx.initialBranch,
|
|
106
|
+
finalBranch: ctx.finalBranch,
|
|
107
|
+
branchFlow: ctx.branchFlow,
|
|
108
|
+
autoMerge: ctx.autoMerge,
|
|
109
|
+
semver: {
|
|
110
|
+
bumpRules: ctx.semver.bumpRules
|
|
111
|
+
},
|
|
112
|
+
domains: ctx.domains
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return JSON.stringify(config, null, 2)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Init generator main entry point.
|
|
120
|
+
*
|
|
121
|
+
* Orchestrates the initialization process by:
|
|
122
|
+
* 1. Prompting user for project preferences (currently unused - see note)
|
|
123
|
+
* 2. Merging user input with default configuration
|
|
124
|
+
* 3. Generating and writing .pipecraftrc.json file
|
|
125
|
+
*
|
|
126
|
+
* @param {PinionContext} ctx - Pinion generator context from CLI
|
|
127
|
+
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
128
|
+
*
|
|
129
|
+
* @throws {Error} If configuration file cannot be written
|
|
130
|
+
* @throws {Error} If user input validation fails
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* // Called by Pinion framework when user runs `pipecraft init`
|
|
135
|
+
* const result = await generate({
|
|
136
|
+
* cwd: '/path/to/project',
|
|
137
|
+
* argv: ['init'],
|
|
138
|
+
* pinion: { ... }
|
|
139
|
+
* })
|
|
140
|
+
*
|
|
141
|
+
* // Results in: /path/to/project/.pipecraftrc.json
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* @note Current Behavior: Despite prompting for user input, the generator
|
|
145
|
+
* currently overwrites all responses with `defaultConfig` values (line 167).
|
|
146
|
+
* This ensures consistency for the initial release. Future versions will
|
|
147
|
+
* respect user choices and allow customization of branch names, merge strategies,
|
|
148
|
+
* and domain configurations.
|
|
149
|
+
*
|
|
150
|
+
* Prompts Presented (currently unused):
|
|
151
|
+
* - Project name
|
|
152
|
+
* - CI provider (GitHub/GitLab)
|
|
153
|
+
* - Merge strategy (fast-forward/merge)
|
|
154
|
+
* - Conventional commits enforcement
|
|
155
|
+
* - Development branch name
|
|
156
|
+
* - Production branch name
|
|
157
|
+
* - Branch flow sequence
|
|
158
|
+
*/
|
|
159
|
+
export const generate = (ctx: PinionContext) =>
|
|
160
|
+
Promise.resolve(ctx)
|
|
161
|
+
.then(prompt([
|
|
162
|
+
{
|
|
163
|
+
type: 'input',
|
|
164
|
+
name: 'projectName',
|
|
165
|
+
message: 'What is your project name?',
|
|
166
|
+
default: 'my-project'
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'list',
|
|
170
|
+
name: 'ciProvider',
|
|
171
|
+
message: 'Which CI provider are you using?',
|
|
172
|
+
choices: [
|
|
173
|
+
{ name: 'GitHub Actions', value: 'github' },
|
|
174
|
+
{ name: 'GitLab CI/CD', value: 'gitlab' }
|
|
175
|
+
],
|
|
176
|
+
default: 'github'
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
type: 'list',
|
|
180
|
+
name: 'mergeStrategy',
|
|
181
|
+
message: 'What merge strategy do you prefer?',
|
|
182
|
+
choices: [
|
|
183
|
+
{ name: 'Fast-forward only (recommended)', value: 'fast-forward' },
|
|
184
|
+
{ name: 'Merge commits', value: 'merge' }
|
|
185
|
+
],
|
|
186
|
+
default: 'fast-forward'
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
type: 'confirm',
|
|
190
|
+
name: 'requireConventionalCommits',
|
|
191
|
+
message: 'Require conventional commit format for PR titles?',
|
|
192
|
+
default: true
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'input',
|
|
196
|
+
name: 'initialBranch',
|
|
197
|
+
message: 'What is your development branch name?',
|
|
198
|
+
default: 'develop'
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: 'input',
|
|
202
|
+
name: 'finalBranch',
|
|
203
|
+
message: 'What is your production branch name?',
|
|
204
|
+
default: 'main'
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
type: 'input',
|
|
208
|
+
name: 'branchFlow',
|
|
209
|
+
message: 'Enter your branch flow (comma-separated)',
|
|
210
|
+
default: 'develop,staging,main',
|
|
211
|
+
filter: (input: string) => input.split(',').map(b => b.trim())
|
|
212
|
+
}
|
|
213
|
+
]))
|
|
214
|
+
.then((ctx) => ({ ...ctx, ...defaultConfig } as PipecraftConfig))
|
|
215
|
+
.then((config) => {
|
|
216
|
+
const configData = {
|
|
217
|
+
ciProvider: config.ciProvider,
|
|
218
|
+
mergeStrategy: config.mergeStrategy,
|
|
219
|
+
requireConventionalCommits: config.requireConventionalCommits,
|
|
220
|
+
initialBranch: config.initialBranch,
|
|
221
|
+
finalBranch: config.finalBranch,
|
|
222
|
+
branchFlow: config.branchFlow,
|
|
223
|
+
autoMerge: config.autoMerge,
|
|
224
|
+
semver: {
|
|
225
|
+
bumpRules: config.semver.bumpRules
|
|
226
|
+
},
|
|
227
|
+
domains: config.domains
|
|
228
|
+
}
|
|
229
|
+
return writeJSON(() => configData, toFile('.pipecraftrc.json'))(ctx)
|
|
230
|
+
})
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflows Template Generator
|
|
3
|
+
*
|
|
4
|
+
* Main orchestrator for generating complete GitHub Actions CI/CD pipeline.
|
|
5
|
+
* This generator creates all necessary workflow files including:
|
|
6
|
+
* - Main pipeline workflow (path-based change detection)
|
|
7
|
+
* - Reusable composite actions (tag creation, versioning, branch management, etc.)
|
|
8
|
+
*
|
|
9
|
+
* The generator supports both initial generation and incremental updates, preserving
|
|
10
|
+
* user modifications to existing workflows through intelligent merging.
|
|
11
|
+
*
|
|
12
|
+
* @module generators/workflows.tpl
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { generate } from './generators/workflows.tpl.js'
|
|
17
|
+
*
|
|
18
|
+
* // Initial generation - creates all workflows
|
|
19
|
+
* await generate({
|
|
20
|
+
* cwd: '/path/to/project',
|
|
21
|
+
* config: pipecraftConfig
|
|
22
|
+
* })
|
|
23
|
+
*
|
|
24
|
+
* // Incremental update - merges with existing pipeline
|
|
25
|
+
* await generate({
|
|
26
|
+
* cwd: '/path/to/project',
|
|
27
|
+
* pipelinePath: '.github/workflows/pipeline.yml',
|
|
28
|
+
* config: pipecraftConfig
|
|
29
|
+
* })
|
|
30
|
+
*
|
|
31
|
+
* // Creates:
|
|
32
|
+
* // .github/workflows/pipeline.yml - Main pipeline
|
|
33
|
+
* // .github/actions/detect-changes/... - Change detection action
|
|
34
|
+
* // .github/actions/calculate-version/... - Version calculation action
|
|
35
|
+
* // .github/actions/create-tag/... - Tag creation action
|
|
36
|
+
* // .github/actions/create-pr/... - PR creation action
|
|
37
|
+
* // .github/actions/manage-branch/... - Branch management action
|
|
38
|
+
* // .github/actions/promote-branch/... - Branch promotion action
|
|
39
|
+
* // .github/actions/create-release/... - Release creation action
|
|
40
|
+
* // .release-it.cjs - Release-it configuration
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
import { PinionContext, toFile, renderTemplate, loadJSON, when } from '@featherscloud/pinion'
|
|
45
|
+
import { IdempotencyManager } from '../utils/idempotency.js'
|
|
46
|
+
import { PipecraftConfig } from '../types/index.js'
|
|
47
|
+
import { readFileSync, existsSync } from 'fs'
|
|
48
|
+
import { parse } from 'yaml'
|
|
49
|
+
import { logger } from '../utils/logger.js'
|
|
50
|
+
|
|
51
|
+
// Import individual workflow templates
|
|
52
|
+
import { generate as generateTagWorkflow } from '../templates/actions/create-tag.yml.tpl.js'
|
|
53
|
+
import { generate as generateChangesWorkflow } from '../templates/actions/detect-changes.yml.tpl.js'
|
|
54
|
+
import { generate as generateVersionWorkflow } from '../templates/actions/calculate-version.yml.tpl.js'
|
|
55
|
+
import { generate as generateCreatePRWorkflow } from '../templates/actions/create-pr.yml.tpl.js'
|
|
56
|
+
import { generate as generateBranchWorkflow } from '../templates/actions/manage-branch.yml.tpl.js'
|
|
57
|
+
import { generate as generatePromoteBranchWorkflow } from '../templates/actions/promote-branch.yml.tpl.js'
|
|
58
|
+
import { generate as generateReleaseWorkflow } from '../templates/actions/create-release.yml.tpl.js'
|
|
59
|
+
import { generate as generatePathBasedPipeline } from '../templates/workflows/pipeline-path-based.yml.tpl.js'
|
|
60
|
+
import { generate as generateEnforcePRTarget } from '../templates/workflows/enforce-pr-target.yml.tpl.js'
|
|
61
|
+
import { generate as generatePRTitleCheck } from '../templates/workflows/pr-title-check.yml.tpl.js'
|
|
62
|
+
import { generate as generateReleaseItConfig } from '../templates/release-it.cjs.tpl.js'
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Default fallback configuration when no config file exists.
|
|
66
|
+
* Mirrors `defaultConfig` from init.tpl.ts to ensure consistent behavior.
|
|
67
|
+
*
|
|
68
|
+
* @const
|
|
69
|
+
* @see {@link module:generators/init.tpl~defaultConfig}
|
|
70
|
+
*/
|
|
71
|
+
const defaultConfig = {
|
|
72
|
+
ciProvider: 'github' as const,
|
|
73
|
+
mergeStrategy: 'fast-forward' as const,
|
|
74
|
+
requireConventionalCommits: true,
|
|
75
|
+
initialBranch: 'develop',
|
|
76
|
+
finalBranch: 'main',
|
|
77
|
+
branchFlow: ['develop', 'staging', 'main'],
|
|
78
|
+
semver: {
|
|
79
|
+
bumpRules: {
|
|
80
|
+
feat: 'minor',
|
|
81
|
+
fix: 'patch',
|
|
82
|
+
breaking: 'major'
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
domains: {
|
|
86
|
+
api: { paths: ['apps/api/**'], description: 'API application changes' },
|
|
87
|
+
web: { paths: ['apps/web/**'], description: 'Web application changes' },
|
|
88
|
+
libs: { paths: ['libs/**'], description: 'Shared library changes' },
|
|
89
|
+
cicd: { paths: ['.github/workflows/**'], description: 'CI/CD configuration changes' }
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Workflows generator main entry point.
|
|
95
|
+
*
|
|
96
|
+
* Orchestrates the complete workflow generation process:
|
|
97
|
+
* 1. Loads existing pipeline (if specified) for merging
|
|
98
|
+
* 2. Merges configuration with defaults
|
|
99
|
+
* 3. Generates all composite actions in parallel
|
|
100
|
+
* 4. Generates the main pipeline workflow
|
|
101
|
+
*
|
|
102
|
+
* @param {PinionContext & { pipelinePath?: string, outputPipelinePath?: string, config?: any }} ctx - Extended Pinion context
|
|
103
|
+
* @param {string} [ctx.pipelinePath] - Path to existing pipeline for incremental updates
|
|
104
|
+
* @param {string} [ctx.outputPipelinePath] - Custom output path for pipeline (defaults to .github/workflows/pipeline.yml)
|
|
105
|
+
* @param {PipecraftConfig} [ctx.config] - PipeCraft configuration (overrides defaults)
|
|
106
|
+
* @returns {Promise<PinionContext>} Updated context after workflow generation
|
|
107
|
+
*
|
|
108
|
+
* @throws {Error} If workflow files cannot be written
|
|
109
|
+
* @throws {Error} If existing pipeline cannot be parsed
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* // Initial generation with config
|
|
114
|
+
* await generate({
|
|
115
|
+
* cwd: '/path/to/project',
|
|
116
|
+
* config: {
|
|
117
|
+
* ciProvider: 'github',
|
|
118
|
+
* branchFlow: ['develop', 'staging', 'main'],
|
|
119
|
+
* domains: { api: { paths: ['src/api/**'] } }
|
|
120
|
+
* }
|
|
121
|
+
* })
|
|
122
|
+
*
|
|
123
|
+
* // Update existing pipeline
|
|
124
|
+
* await generate({
|
|
125
|
+
* cwd: '/path/to/project',
|
|
126
|
+
* pipelinePath: '.github/workflows/pipeline.yml',
|
|
127
|
+
* config: updatedConfig
|
|
128
|
+
* })
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @note The generator creates 9 files:
|
|
132
|
+
* - 1 main workflow (pipeline.yml)
|
|
133
|
+
* - 7 composite actions (in .github/actions/)
|
|
134
|
+
* - 1 release-it configuration (.release-it.cjs)
|
|
135
|
+
*
|
|
136
|
+
* All actions are generated in parallel for performance, followed by
|
|
137
|
+
* the main pipeline which may reference the actions.
|
|
138
|
+
*/
|
|
139
|
+
export const generate = (ctx: PinionContext & { pipelinePath?: string, outputPipelinePath?: string, config?: any }) =>
|
|
140
|
+
Promise.resolve(ctx)
|
|
141
|
+
.then((ctx) => {
|
|
142
|
+
logger.info('🔧 Generating GitHub Actions...')
|
|
143
|
+
|
|
144
|
+
// Load existing pipeline if provided
|
|
145
|
+
let existingPipeline = null
|
|
146
|
+
let existingPipelineContent = null
|
|
147
|
+
if (ctx.pipelinePath && existsSync(ctx.pipelinePath)) {
|
|
148
|
+
try {
|
|
149
|
+
existingPipelineContent = readFileSync(ctx.pipelinePath, 'utf8')
|
|
150
|
+
existingPipeline = parse(existingPipelineContent)
|
|
151
|
+
logger.verbose(`📖 Loaded existing pipeline from: ${ctx.pipelinePath}`)
|
|
152
|
+
} catch (error) {
|
|
153
|
+
logger.warn(`⚠️ Failed to load existing pipeline: ${error}`)
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return { ...ctx, ...defaultConfig, ...ctx.config, ...ctx, existingPipeline, existingPipelineContent, outputPipelinePath: ctx.outputPipelinePath }
|
|
158
|
+
})
|
|
159
|
+
.then((ctx) => {
|
|
160
|
+
// Generate individual GitHub Actions and release-it config
|
|
161
|
+
return Promise.all([
|
|
162
|
+
generateChangesWorkflow(ctx),
|
|
163
|
+
generateTagWorkflow(ctx),
|
|
164
|
+
generateVersionWorkflow(ctx),
|
|
165
|
+
generateCreatePRWorkflow(ctx),
|
|
166
|
+
generateBranchWorkflow(ctx),
|
|
167
|
+
generatePromoteBranchWorkflow(ctx),
|
|
168
|
+
generateReleaseWorkflow(ctx),
|
|
169
|
+
generateReleaseItConfig(ctx)
|
|
170
|
+
]).then(() => ctx)
|
|
171
|
+
})
|
|
172
|
+
.then((ctx) => {
|
|
173
|
+
// Generate the main pipeline
|
|
174
|
+
return generatePathBasedPipeline(ctx)
|
|
175
|
+
})
|
|
176
|
+
.then((ctx) => {
|
|
177
|
+
// Generate the enforce PR target workflow
|
|
178
|
+
return generateEnforcePRTarget(ctx)
|
|
179
|
+
})
|
|
180
|
+
.then((ctx) => {
|
|
181
|
+
// Generate the PR title check workflow
|
|
182
|
+
return generatePRTitleCheck(ctx)
|
|
183
|
+
})
|
|
184
|
+
.then((ctx) => {
|
|
185
|
+
logger.success('✅ Generated workflows in: .github/workflows')
|
|
186
|
+
return ctx
|
|
187
|
+
})
|