pipecraft 0.44.4 → 0.44.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"release-it.cjs.tpl.d.ts","sourceRoot":"","sources":["../../src/templates/release-it.cjs.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAuHlF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,iBAUrC,CAAA"}
1
+ {"version":3,"file":"release-it.cjs.tpl.d.ts","sourceRoot":"","sources":["../../src/templates/release-it.cjs.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAoBlF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,iBAUrC,CAAA"}
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import { renderTemplate, toFile } from '@featherscloud/pinion';
16
16
  import { logger } from '../utils/logger.js';
17
+ import { buildReleaseItConfig } from '../utils/release-it-config.js';
17
18
  /**
18
19
  * Generate release-it configuration content
19
20
  *
@@ -25,106 +26,10 @@ import { logger } from '../utils/logger.js';
25
26
  * @param {any} ctx.semver.bumpRules - Version bump rules mapping
26
27
  * @returns {string} JavaScript configuration content
27
28
  */
28
- const releaseItTemplate = (ctx) => {
29
- // Base default prefixes for conventional commits
30
- const baseDefaults = {
31
- test: 'ignore',
32
- build: 'ignore',
33
- ci: 'patch',
34
- docs: 'patch',
35
- chore: 'minor',
36
- style: 'patch',
37
- fix: 'patch',
38
- perf: 'patch',
39
- refactor: 'patch',
40
- feat: 'minor',
41
- major: 'major'
42
- };
43
- // Get user-defined bump rules from config
44
- const userBumpRules = ctx.config?.semver?.bumpRules || ctx.semver?.bumpRules || {};
45
- // Merge user rules with defaults (user rules take precedence)
46
- const mergedRules = { ...baseDefaults, ...userBumpRules };
47
- // Convert to formatted string for the config file
48
- const rulesEntries = Object.entries(mergedRules)
49
- .map(([type, level]) => ` ${type}: '${level}'`)
50
- .join(',\n');
51
- return `const DEFAULT_PREFIXES = {
52
- ${rulesEntries}
53
- }
54
-
55
- module.exports = {
56
- DEFAULT_PREFIXES,
57
- "git": {
58
- "requireCleanWorkingDir": false,
59
- "commit": false,
60
- "pushArgs": ["--tags"],
61
- "tagMatch": "v[0-9]*.[0-9]*.[0-9]*" // Required to exclude non-versioning tags
62
- },
63
- "github": {
64
- "release": true,
65
- "releaseName": "Release \${version}"
66
- },
67
- "npm": {
68
- "ignoreVersion": true,
69
- "publish": false,
70
- "skipChecks": true
71
- },
72
- "hooks": {
73
- 'after:release': "echo \${version} > .release-version"
74
- },
75
-
76
-
77
- "plugins": {
78
- "@release-it/conventional-changelog": {
79
- "whatBump": (commits,options)=>{
80
- let defaults = DEFAULT_PREFIXES;
81
-
82
- let types = (options?.preset?.types || [])
83
- .reduce((a, v) => {
84
- return { ...a, [v.type]: v.release}
85
- }, {})
86
-
87
- // Config wins over the preset. DEFAULT_PREFIXES already carries the user's
88
- // semver.bumpRules merged over Pipecraft's baseline, so it is the stated
89
- // intent; the preset only supplies types the config never mentions. Merging
90
- // the other way round silently discarded configured rules.
91
- types = Object.assign({},types,defaults)
92
- let breakings = 0
93
- let features = 0
94
- let levelSet = ['major','minor','patch','ignore']
95
-
96
- // Handle empty commits array - return null to skip release
97
- if (!commits || commits.length === 0) {
98
- return {
99
- level: null,
100
- reason: 'No commits found - skipping release'
101
- }
102
- }
103
-
104
- let levels = commits.map(commit => {
105
- let level = levelSet.indexOf(types[commit.type])
106
- level = level<0?3:level
107
- if (commit.notes.length > 0) {
108
- breakings += commit.notes.length
109
- }
110
- if(commit.type === 'feat'){
111
- features += 1;
112
- }
113
- return level
114
- })
115
-
116
- let level = Math.min.apply(Math, levels)
117
- return {
118
- level: level,
119
- reason: breakings === 1
120
- ? \`There is \${breakings} BREAKING CHANGE and \${features} features\`
121
- : \`There are \${breakings} BREAKING CHANGES and \${features} features\`
122
- }
123
- },
124
- }
125
- }
126
- }`;
127
- };
29
+ const releaseItTemplate = (ctx) =>
30
+ // `generate` and `init --with-versioning` both write .release-it.cjs. One builder, so
31
+ // they cannot drift apart again — see src/utils/release-it-config.ts and #496.
32
+ buildReleaseItConfig(ctx.config ?? ctx);
128
33
  /**
129
34
  * Release-It configuration generator
130
35
  *
@@ -1 +1 @@
1
- {"version":3,"file":"release-it.cjs.tpl.js","sourceRoot":"","sources":["../../src/templates/release-it.cjs.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAsB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,iBAAiB,GAAG,CAAC,GAAQ,EAAE,EAAE;IACrC,iDAAiD;IACjD,MAAM,YAAY,GAA2B;QAC3C,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;KACf,CAAA;IAED,0CAA0C;IAC1C,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAA;IAElF,8DAA8D;IAC9D,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,aAAa,EAAE,CAAA;IAEzD,kDAAkD;IAClD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,MAAM,KAAK,GAAG,CAAC;SAC/C,IAAI,CAAC,KAAK,CAAC,CAAA;IAEd,OAAO;EACP,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0EV,CAAA;AACJ,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAkB,EAAE,EAAE,CAC7C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAA;IAC3D,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC;KACD,IAAI,CAAC,cAAc,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACrF,IAAI,CAAC,GAAG,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IAC7C,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"release-it.cjs.tpl.js","sourceRoot":"","sources":["../../src/templates/release-it.cjs.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAsB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE;;;;;;;;;;GAUG;AACH,MAAM,iBAAiB,GAAG,CAAC,GAAQ,EAAE,EAAE;AACrC,sFAAsF;AACtF,+EAA+E;AAC/E,oBAAoB,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAkB,EAAE,EAAE,CAC7C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAA;IAC3D,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC;KACD,IAAI,CAAC,cAAc,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACrF,IAAI,CAAC,GAAG,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IAC7C,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The single source of `.release-it.cjs`
3
+ *
4
+ * Two callers write this file and they used to disagree, so a user's config depended on
5
+ * which command they ran last:
6
+ *
7
+ * - `pipecraft generate` renders `src/templates/release-it.cjs.tpl.ts`
8
+ * - `pipecraft init --with-versioning` calls `setupVersionManagement()`, which calls
9
+ * `VersionManager.generateReleaseItConfig()`
10
+ *
11
+ * Every divergence between them turned out to be a bug: #483 (each read bump rules from a
12
+ * different config key) and #287 (one returned `Infinity` for an empty commit list). #496
13
+ * closed the last two, on `github.release` and on whether `options.preset.types` is read,
14
+ * by moving the whole thing here. The template's behaviour won, so `generate` output is
15
+ * unchanged; `tests/fixtures/release-it-golden.cjs` pins that.
16
+ *
17
+ * @module utils/release-it-config
18
+ */
19
+ /**
20
+ * Build the contents of `.release-it.cjs`.
21
+ *
22
+ * @param config - the Pipecraft config. `semver.bumpRules` is the schema-required location;
23
+ * `versioning.bumpRules` is the deprecated spelling and loses to it.
24
+ */
25
+ export declare function buildReleaseItConfig(config: any): string;
26
+ //# sourceMappingURL=release-it-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-it-config.d.ts","sourceRoot":"","sources":["../../src/utils/release-it-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAuGxD"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * The single source of `.release-it.cjs`
3
+ *
4
+ * Two callers write this file and they used to disagree, so a user's config depended on
5
+ * which command they ran last:
6
+ *
7
+ * - `pipecraft generate` renders `src/templates/release-it.cjs.tpl.ts`
8
+ * - `pipecraft init --with-versioning` calls `setupVersionManagement()`, which calls
9
+ * `VersionManager.generateReleaseItConfig()`
10
+ *
11
+ * Every divergence between them turned out to be a bug: #483 (each read bump rules from a
12
+ * different config key) and #287 (one returned `Infinity` for an empty commit list). #496
13
+ * closed the last two, on `github.release` and on whether `options.preset.types` is read,
14
+ * by moving the whole thing here. The template's behaviour won, so `generate` output is
15
+ * unchanged; `tests/fixtures/release-it-golden.cjs` pins that.
16
+ *
17
+ * @module utils/release-it-config
18
+ */
19
+ /**
20
+ * Build the contents of `.release-it.cjs`.
21
+ *
22
+ * @param config - the Pipecraft config. `semver.bumpRules` is the schema-required location;
23
+ * `versioning.bumpRules` is the deprecated spelling and loses to it.
24
+ */
25
+ export function buildReleaseItConfig(config) {
26
+ // Base default prefixes for conventional commits
27
+ const baseDefaults = {
28
+ test: 'ignore',
29
+ build: 'ignore',
30
+ ci: 'patch',
31
+ docs: 'patch',
32
+ chore: 'minor',
33
+ style: 'patch',
34
+ fix: 'patch',
35
+ perf: 'patch',
36
+ refactor: 'patch',
37
+ feat: 'minor',
38
+ major: 'major'
39
+ };
40
+ // Get user-defined bump rules from config
41
+ const userBumpRules = config?.semver?.bumpRules || config?.versioning?.bumpRules || {};
42
+ // Merge user rules with defaults (user rules take precedence)
43
+ const mergedRules = { ...baseDefaults, ...userBumpRules };
44
+ // Convert to formatted string for the config file
45
+ const rulesEntries = Object.entries(mergedRules)
46
+ .map(([type, level]) => ` ${type}: '${level}'`)
47
+ .join(',\n');
48
+ return `const DEFAULT_PREFIXES = {
49
+ ${rulesEntries}
50
+ }
51
+
52
+ module.exports = {
53
+ DEFAULT_PREFIXES,
54
+ "git": {
55
+ "requireCleanWorkingDir": false,
56
+ "commit": false,
57
+ "pushArgs": ["--tags"],
58
+ "tagMatch": "v[0-9]*.[0-9]*.[0-9]*" // Required to exclude non-versioning tags
59
+ },
60
+ "github": {
61
+ "release": true,
62
+ "releaseName": "Release \${version}"
63
+ },
64
+ "npm": {
65
+ "ignoreVersion": true,
66
+ "publish": false,
67
+ "skipChecks": true
68
+ },
69
+ "hooks": {
70
+ 'after:release': "echo \${version} > .release-version"
71
+ },
72
+
73
+
74
+ "plugins": {
75
+ "@release-it/conventional-changelog": {
76
+ "whatBump": (commits,options)=>{
77
+ let defaults = DEFAULT_PREFIXES;
78
+
79
+ let types = (options?.preset?.types || [])
80
+ .reduce((a, v) => {
81
+ return { ...a, [v.type]: v.release}
82
+ }, {})
83
+
84
+ // Config wins over the preset. DEFAULT_PREFIXES already carries the user's
85
+ // semver.bumpRules merged over Pipecraft's baseline, so it is the stated
86
+ // intent; the preset only supplies types the config never mentions. Merging
87
+ // the other way round silently discarded configured rules.
88
+ types = Object.assign({},types,defaults)
89
+ let breakings = 0
90
+ let features = 0
91
+ let levelSet = ['major','minor','patch','ignore']
92
+
93
+ // Handle empty commits array - return null to skip release
94
+ if (!commits || commits.length === 0) {
95
+ return {
96
+ level: null,
97
+ reason: 'No commits found - skipping release'
98
+ }
99
+ }
100
+
101
+ let levels = commits.map(commit => {
102
+ let level = levelSet.indexOf(types[commit.type])
103
+ level = level<0?3:level
104
+ if (commit.notes.length > 0) {
105
+ breakings += commit.notes.length
106
+ }
107
+ if(commit.type === 'feat'){
108
+ features += 1;
109
+ }
110
+ return level
111
+ })
112
+
113
+ let level = Math.min.apply(Math, levels)
114
+ return {
115
+ level: level,
116
+ reason: breakings === 1
117
+ ? \`There is \${breakings} BREAKING CHANGE and \${features} features\`
118
+ : \`There are \${breakings} BREAKING CHANGES and \${features} features\`
119
+ }
120
+ },
121
+ }
122
+ }
123
+ }`;
124
+ }
125
+ //# sourceMappingURL=release-it-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-it-config.js","sourceRoot":"","sources":["../../src/utils/release-it-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAW;IAC9C,iDAAiD;IACjD,MAAM,YAAY,GAA2B;QAC3C,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;KACf,CAAA;IAED,0CAA0C;IAC1C,MAAM,aAAa,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,IAAI,MAAM,EAAE,UAAU,EAAE,SAAS,IAAI,EAAE,CAAA;IAEtF,8DAA8D;IAC9D,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,aAAa,EAAE,CAAA;IAEzD,kDAAkD;IAClD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,MAAM,KAAK,GAAG,CAAC;SAC/C,IAAI,CAAC,KAAK,CAAC,CAAA;IAEd,OAAO;EACP,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0EV,CAAA;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAInC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBAAuB,IAAI,MAAM;IAwGjC;;;;;;;;;;;;;;;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;IAmBtC;;;;;;;;;;;;;OAaG;IACH,iBAAiB,IAAI,MAAM;IAa3B;;;;;;;;;;;;;;;OAeG;IACH,oBAAoB,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAwB1D"}
1
+ {"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAInC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBAAuB,IAAI,MAAM;IAMjC;;;;;;;;;;;;;;;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;IAmBtC;;;;;;;;;;;;;OAaG;IACH,iBAAiB,IAAI,MAAM;IAa3B;;;;;;;;;;;;;;;OAeG;IACH,oBAAoB,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAwB1D"}
@@ -17,6 +17,7 @@
17
17
  import { execSync } from 'child_process';
18
18
  import { existsSync, readFileSync, writeFileSync } from 'fs';
19
19
  import { join } from 'path';
20
+ import { buildReleaseItConfig } from './release-it-config.js';
20
21
  /**
21
22
  * Manager for semantic versioning and release automation.
22
23
  *
@@ -72,103 +73,9 @@ export class VersionManager {
72
73
  * ```
73
74
  */
74
75
  generateReleaseItConfig() {
75
- // Bump rules live under `semver` in the schema. `versioning.bumpRules` is the
76
- // deprecated spelling and loses to it. This is the same precedence the release-it
77
- // template and the pr-title-check template use — reading only `versioning` here meant
78
- // a project configured the way the schema requires got none of its rules.
79
- const userBumpRules = {
80
- ...(this.config.versioning?.bumpRules ?? {}),
81
- ...(this.config.semver?.bumpRules ?? {})
82
- };
83
- // Keep these in step with src/templates/release-it.cjs.tpl.ts.
84
- const baseDefaults = {
85
- test: 'ignore',
86
- build: 'ignore',
87
- ci: 'patch',
88
- docs: 'patch',
89
- chore: 'minor',
90
- style: 'patch',
91
- fix: 'patch',
92
- perf: 'patch',
93
- refactor: 'patch',
94
- feat: 'minor',
95
- major: 'major'
96
- };
97
- const mergedRules = { ...baseDefaults, ...userBumpRules };
98
- const rulesEntries = Object.entries(mergedRules)
99
- .map(([type, level]) => ` ${type}: '${level}'`)
100
- .join(',\n');
101
- const staticConfig = {
102
- git: {
103
- requireCleanWorkingDir: false,
104
- commit: false,
105
- pushArgs: ['--tags'],
106
- tagMatch: 'v[0-9]*.[0-9]*.[0-9]*'
107
- },
108
- github: {
109
- release: false
110
- },
111
- npm: {
112
- ignoreVersion: true,
113
- publish: false,
114
- skipChecks: true
115
- },
116
- hooks: {
117
- 'after:release': 'echo ${version} > .release-version'
118
- }
119
- };
120
- // whatBump has to be emitted as source. Serialising the whole config with
121
- // JSON.stringify silently dropped it — and it is the only thing that reads the bump
122
- // rules, so the generated file ignored them entirely.
123
- return `const DEFAULT_PREFIXES = {
124
- ${rulesEntries}
125
- }
126
-
127
- module.exports = {
128
- ...${JSON.stringify(staticConfig, null, 2).replace(/\n/g, '\n ')},
129
- plugins: {
130
- '@release-it/conventional-changelog': {
131
- whatBump: commits => {
132
- const bumpRules = DEFAULT_PREFIXES
133
- let breakings = 0
134
- let features = 0
135
- const levelSet = ['major', 'minor', 'patch', 'ignore']
136
-
137
- // Math.min() with no arguments is Infinity, which release-it cannot use as a bump
138
- // level. Return an explicit "no release" instead, matching release-it.cjs.tpl.ts.
139
- if (!commits || commits.length === 0) {
140
- return { level: null, reason: 'No commits found - skipping release' }
141
- }
142
-
143
- const level = Math.min(
144
- ...commits.map(commit => {
145
- let level = levelSet.indexOf(bumpRules[commit.type] || 'ignore')
146
- level = level < 0 ? 3 : level
147
-
148
- if (commit.notes.length > 0) {
149
- breakings += commit.notes.length
150
- }
151
- if (commit.type === 'feat') {
152
- features += 1
153
- }
154
- return level
155
- })
156
- )
157
-
158
- return {
159
- level: level,
160
- reason:
161
- breakings === 1
162
- ? \`There is \${breakings} BREAKING CHANGE and \${features} features\`
163
- : \`There are \${breakings} BREAKING CHANGES and \${features} features\`
164
- }
165
- }
166
- }
167
- }
168
- }
169
-
170
- module.exports.DEFAULT_PREFIXES = DEFAULT_PREFIXES
171
- `;
76
+ // Same builder `generate` uses, so `init --with-versioning` cannot produce a different
77
+ // file than the pipeline would. See src/utils/release-it-config.ts and #496.
78
+ return buildReleaseItConfig(this.config);
172
79
  }
173
80
  /**
174
81
  * Generate commitlint configuration file content.
@@ -1 +1 @@
1
- {"version":3,"file":"versioning.js","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versioning.js","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipecraft",
3
- "version": "0.44.4",
3
+ "version": "0.44.5",
4
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",