@git.zone/cli 1.19.8 → 1.20.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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/mod_commit/index.js +56 -30
- package/dist_ts/mod_commit/mod.helpers.d.ts +1 -6
- package/dist_ts/mod_commit/mod.helpers.js +61 -91
- package/package.json +1 -1
- package/readme.hints.md +56 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/mod_commit/index.ts +57 -29
- package/ts/mod_commit/mod.helpers.ts +70 -120
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/cli',
|
|
6
|
-
version: '1.
|
|
6
|
+
version: '1.20.0',
|
|
7
7
|
description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxlQUFlO0lBQ3JCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSwrTEFBK0w7Q0FDN00sQ0FBQSJ9
|
|
@@ -20,35 +20,61 @@ export const run = async (argvArg) => {
|
|
|
20
20
|
recommendedNextVersionScope: nextCommitObject.recommendedNextVersionScope,
|
|
21
21
|
recommendedNextVersionMessage: nextCommitObject.recommendedNextVersionMessage,
|
|
22
22
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
name:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
23
|
+
let answerBucket;
|
|
24
|
+
// Check if -y or --yes flag is set to auto-accept recommendations
|
|
25
|
+
if (argvArg.y || argvArg.yes) {
|
|
26
|
+
// Auto-mode: create AnswerBucket programmatically
|
|
27
|
+
logger.log('info', '✓ Auto-accepting AI recommendations (--yes flag)');
|
|
28
|
+
answerBucket = new plugins.smartinteract.AnswerBucket();
|
|
29
|
+
answerBucket.addAnswer({
|
|
30
|
+
name: 'commitType',
|
|
31
|
+
value: nextCommitObject.recommendedNextVersionLevel,
|
|
32
|
+
});
|
|
33
|
+
answerBucket.addAnswer({
|
|
34
|
+
name: 'commitScope',
|
|
35
|
+
value: nextCommitObject.recommendedNextVersionScope,
|
|
36
|
+
});
|
|
37
|
+
answerBucket.addAnswer({
|
|
38
|
+
name: 'commitDescription',
|
|
39
|
+
value: nextCommitObject.recommendedNextVersionMessage,
|
|
40
|
+
});
|
|
41
|
+
answerBucket.addAnswer({
|
|
42
|
+
name: 'pushToOrigin',
|
|
43
|
+
value: !!(argvArg.p || argvArg.push), // Only push if -p flag also provided
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Interactive mode: prompt user for input
|
|
48
|
+
const commitInteract = new plugins.smartinteract.SmartInteract();
|
|
49
|
+
commitInteract.addQuestions([
|
|
50
|
+
{
|
|
51
|
+
type: 'list',
|
|
52
|
+
name: `commitType`,
|
|
53
|
+
message: `Choose TYPE of the commit:`,
|
|
54
|
+
choices: [`fix`, `feat`, `BREAKING CHANGE`],
|
|
55
|
+
default: nextCommitObject.recommendedNextVersionLevel,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: 'input',
|
|
59
|
+
name: `commitScope`,
|
|
60
|
+
message: `What is the SCOPE of the commit:`,
|
|
61
|
+
default: nextCommitObject.recommendedNextVersionScope,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
type: `input`,
|
|
65
|
+
name: `commitDescription`,
|
|
66
|
+
message: `What is the DESCRIPTION of the commit?`,
|
|
67
|
+
default: nextCommitObject.recommendedNextVersionMessage,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
type: 'confirm',
|
|
71
|
+
name: `pushToOrigin`,
|
|
72
|
+
message: `Do you want to push this version now?`,
|
|
73
|
+
default: true,
|
|
74
|
+
},
|
|
75
|
+
]);
|
|
76
|
+
answerBucket = await commitInteract.runQueue();
|
|
77
|
+
}
|
|
52
78
|
const commitString = createCommitStringFromAnswerBucket(answerBucket);
|
|
53
79
|
const commitVersionType = (() => {
|
|
54
80
|
switch (answerBucket.getAnswerFor('commitType')) {
|
|
@@ -135,4 +161,4 @@ const createCommitStringFromAnswerBucket = (answerBucket) => {
|
|
|
135
161
|
const commitDescription = answerBucket.getAnswerFor('commitDescription');
|
|
136
162
|
return `${commitType}(${commitScope}): ${commitDescription}`;
|
|
137
163
|
};
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29tbWl0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBRXJELE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QyxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVwQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sS0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV0RSxNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQixFQUFFLENBQUMsbUJBQW1CLENBQUM7UUFDckIsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsc0JBQXNCO1FBQy9ELDJCQUEyQixFQUFFLGdCQUFnQixDQUFDLDJCQUEyQjtRQUN6RSwyQkFBMkIsRUFBRSxnQkFBZ0IsQ0FBQywyQkFBMkI7UUFDekUsNkJBQTZCLEVBQUUsZ0JBQWdCLENBQUMsNkJBQTZCO0tBQzlFLENBQUMsQ0FBQztJQUVILElBQUksWUFBZ0QsQ0FBQztJQUVyRCxrRUFBa0U7SUFDbEUsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixrREFBa0Q7UUFDbEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsa0RBQWtELENBQUMsQ0FBQztRQUV2RSxZQUFZLEdBQUcsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hELFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDckIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLDJCQUEyQjtTQUNwRCxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQ3JCLElBQUksRUFBRSxhQUFhO1lBQ25CLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQywyQkFBMkI7U0FDcEQsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLFNBQVMsQ0FBQztZQUNyQixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyw2QkFBNkI7U0FDdEQsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLFNBQVMsQ0FBQztZQUNyQixJQUFJLEVBQUUsY0FBYztZQUNwQixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUscUNBQXFDO1NBQzVFLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ04sMENBQTBDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqRSxjQUFjLENBQUMsWUFBWSxDQUFDO1lBQzFCO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxZQUFZO2dCQUNsQixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixDQUFDO2dCQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsMkJBQTJCO2FBQ3REO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLE9BQU8sRUFBRSxrQ0FBa0M7Z0JBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQywyQkFBMkI7YUFDdEQ7WUFDRDtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixPQUFPLEVBQUUsd0NBQXdDO2dCQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsNkJBQTZCO2FBQ3hEO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLE9BQU8sRUFBRSx1Q0FBdUM7Z0JBQ2hELE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRixDQUFDLENBQUM7UUFDSCxZQUFZLEdBQUcsTUFBTSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLGtDQUFrQyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDOUIsUUFBUSxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDaEQsS0FBSyxLQUFLO2dCQUNSLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE9BQU8sQ0FBQztZQUNqQixLQUFLLGlCQUFpQjtnQkFDcEIsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFTCxFQUFFLENBQUMsV0FBVyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUMzRCxRQUFRLEVBQUUsTUFBTTtRQUNoQixlQUFlLEVBQUUsRUFBRTtLQUNwQixDQUFDLENBQUM7SUFFSCxpREFBaUQ7SUFDakQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztJQUVwQiw0QkFBNEI7SUFDNUIsV0FBVyxFQUFFLENBQUM7SUFDZCxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsaUNBQWlDLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDeEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FDbEQsS0FBSyxDQUFDLEdBQUcsRUFDVCxpQkFBaUIsQ0FDbEIsQ0FBQztJQUNGLE1BQU0sVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDMUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRWpGLDRCQUE0QjtJQUM1QixXQUFXLEVBQUUsQ0FBQztJQUNkLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSw0QkFBNEIsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNuRixJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7SUFDM0MsU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQzlCLGlCQUFpQixFQUNqQixDQUFDLE1BQU0sVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxhQUFhLENBQ3pELENBQUM7SUFDRixTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FDOUIsc0JBQXNCLEVBQ3RCLEdBQUcsTUFBTSxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLE1BQU0sWUFBWSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUN0RyxDQUFDO0lBQ0YsU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQzlCLHdCQUF3QixFQUN4QixnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FDL0MsQ0FBQztJQUNGLElBQUksZ0JBQWdCLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9ELFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUM5Qix3QkFBd0IsRUFDeEIsSUFBSSxHQUFHLGdCQUFnQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FDbkUsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNqQyxTQUFTLEVBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FDN0MsQ0FBQztJQUNGLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU1RSx3QkFBd0I7SUFDeEIsV0FBVyxFQUFFLENBQUM7SUFDZCxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekUsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRWxFLDBCQUEwQjtJQUMxQixXQUFXLEVBQUUsQ0FBQztJQUNkLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvRSxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqRSxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFeEUsMEJBQTBCO0lBQzFCLFdBQVcsRUFBRSxDQUFDO0lBQ2QsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN0RCxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRTdHLG9DQUFvQztJQUNwQyxNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzFELElBQ0UsWUFBWSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFDekMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUM1QixDQUFDO1FBQ0QsV0FBVyxFQUFFLENBQUM7UUFDZCxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLGFBQWEsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sa0JBQWtCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixhQUFhLGdCQUFnQixDQUFDLENBQUM7UUFDaEYsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixhQUFhLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtJQUU5Qyw2QkFBNkI7SUFDN0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNwRixNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRWhELHNCQUFzQjtJQUN0QixFQUFFLENBQUMsWUFBWSxDQUFDO1FBQ2QsV0FBVztRQUNYLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFVBQVUsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztRQUNuRCxXQUFXLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUM7UUFDckQsYUFBYSxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUM7UUFDN0QsVUFBVSxFQUFFLFVBQVU7UUFDdEIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQztLQUNsRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGtDQUFrQyxHQUFHLENBQ3pDLFlBQWdELEVBQ2hELEVBQUU7SUFDRixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNELE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDekUsT0FBTyxHQUFHLFVBQVUsSUFBSSxXQUFXLE1BQU0saUJBQWlCLEVBQUUsQ0FBQztBQUMvRCxDQUFDLENBQUMifQ==
|
|
@@ -10,14 +10,9 @@ export declare function detectCurrentBranch(): Promise<string>;
|
|
|
10
10
|
* @returns The project type
|
|
11
11
|
*/
|
|
12
12
|
export declare function detectProjectType(): Promise<ProjectType>;
|
|
13
|
-
/**
|
|
14
|
-
* Bumps the version in deno.json, commits the change, and creates a tag
|
|
15
|
-
* @param versionType Type of version bump
|
|
16
|
-
* @returns The new version string
|
|
17
|
-
*/
|
|
18
|
-
export declare function bumpDenoVersion(versionType: VersionType): Promise<string>;
|
|
19
13
|
/**
|
|
20
14
|
* Bumps the project version based on project type
|
|
15
|
+
* Handles npm-only, deno-only, and dual projects with unified logic
|
|
21
16
|
* @param projectType The detected project type
|
|
22
17
|
* @param versionType The type of version bump
|
|
23
18
|
* @param currentStep The current step number for progress display
|
|
@@ -80,87 +80,41 @@ function calculateNewVersion(currentVersion, versionType) {
|
|
|
80
80
|
return `${major}.${minor}.${patch}`;
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
|
-
*
|
|
84
|
-
* @param
|
|
85
|
-
* @returns The
|
|
83
|
+
* Reads the current version from package.json or deno.json
|
|
84
|
+
* @param projectType The project type to determine which file to read
|
|
85
|
+
* @returns The current version string
|
|
86
86
|
*/
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
function readCurrentVersion(projectType) {
|
|
88
|
+
if (projectType === 'npm' || projectType === 'both') {
|
|
89
|
+
const packageJsonPath = plugins.path.join(paths.cwd, 'package.json');
|
|
90
|
+
const packageJson = plugins.smartfile.fs.toObjectSync(packageJsonPath);
|
|
91
|
+
if (!packageJson.version) {
|
|
92
|
+
throw new Error('package.json does not contain a version field');
|
|
93
|
+
}
|
|
94
|
+
return packageJson.version;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
|
|
95
98
|
const denoConfig = plugins.smartfile.fs.toObjectSync(denoJsonPath);
|
|
96
99
|
if (!denoConfig.version) {
|
|
97
100
|
throw new Error('deno.json does not contain a version field');
|
|
98
101
|
}
|
|
99
|
-
|
|
100
|
-
const newVersion = calculateNewVersion(currentVersion, versionType);
|
|
101
|
-
logger.log('info', `Bumping deno.json version: ${currentVersion} → ${newVersion}`);
|
|
102
|
-
// Update version
|
|
103
|
-
denoConfig.version = newVersion;
|
|
104
|
-
// Write back to disk
|
|
105
|
-
await plugins.smartfile.memory.toFs(JSON.stringify(denoConfig, null, 2) + '\n', denoJsonPath);
|
|
106
|
-
// Stage the deno.json file
|
|
107
|
-
await smartshellInstance.exec('git add deno.json');
|
|
108
|
-
// Commit the version bump
|
|
109
|
-
await smartshellInstance.exec(`git commit -m "v${newVersion}"`);
|
|
110
|
-
// Create the version tag
|
|
111
|
-
await smartshellInstance.exec(`git tag v${newVersion} -m "v${newVersion}"`);
|
|
112
|
-
logger.log('info', `Created commit and tag v${newVersion}`);
|
|
113
|
-
return newVersion;
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
throw new Error(`Failed to bump deno.json version: ${error.message}`);
|
|
102
|
+
return denoConfig.version;
|
|
117
103
|
}
|
|
118
104
|
}
|
|
119
105
|
/**
|
|
120
|
-
*
|
|
121
|
-
* @param
|
|
122
|
-
* @
|
|
106
|
+
* Updates the version field in a JSON file (package.json or deno.json)
|
|
107
|
+
* @param filePath Path to the JSON file
|
|
108
|
+
* @param newVersion The new version to write
|
|
123
109
|
*/
|
|
124
|
-
async function
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
});
|
|
129
|
-
logger.log('info', `Bumping package.json version using npm version ${versionType}`);
|
|
130
|
-
const result = await smartshellInstance.exec(`npm version ${versionType}`);
|
|
131
|
-
// npm version returns the new version with a 'v' prefix, e.g., "v1.2.3"
|
|
132
|
-
const newVersion = result.stdout.trim().replace(/^v/, '');
|
|
133
|
-
return newVersion;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Syncs the version from package.json to deno.json and amends the npm commit
|
|
137
|
-
* @param version The version to sync
|
|
138
|
-
*/
|
|
139
|
-
async function syncVersionToDenoJson(version) {
|
|
140
|
-
const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
|
|
141
|
-
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
142
|
-
executor: 'bash',
|
|
143
|
-
sourceFilePaths: [],
|
|
144
|
-
});
|
|
145
|
-
try {
|
|
146
|
-
const denoConfig = plugins.smartfile.fs.toObjectSync(denoJsonPath);
|
|
147
|
-
logger.log('info', `Syncing version to deno.json: ${version}`);
|
|
148
|
-
denoConfig.version = version;
|
|
149
|
-
await plugins.smartfile.memory.toFs(JSON.stringify(denoConfig, null, 2) + '\n', denoJsonPath);
|
|
150
|
-
// Stage the deno.json file
|
|
151
|
-
await smartshellInstance.exec('git add deno.json');
|
|
152
|
-
// Amend the npm version commit to include deno.json
|
|
153
|
-
await smartshellInstance.exec('git commit --amend --no-edit');
|
|
154
|
-
// Re-create the tag with force to update it
|
|
155
|
-
await smartshellInstance.exec(`git tag -fa v${version} -m "v${version}"`);
|
|
156
|
-
logger.log('info', `Amended commit to include deno.json and updated tag v${version}`);
|
|
157
|
-
}
|
|
158
|
-
catch (error) {
|
|
159
|
-
throw new Error(`Failed to sync version to deno.json: ${error.message}`);
|
|
160
|
-
}
|
|
110
|
+
async function updateVersionFile(filePath, newVersion) {
|
|
111
|
+
const config = plugins.smartfile.fs.toObjectSync(filePath);
|
|
112
|
+
config.version = newVersion;
|
|
113
|
+
await plugins.smartfile.memory.toFs(JSON.stringify(config, null, 2) + '\n', filePath);
|
|
161
114
|
}
|
|
162
115
|
/**
|
|
163
116
|
* Bumps the project version based on project type
|
|
117
|
+
* Handles npm-only, deno-only, and dual projects with unified logic
|
|
164
118
|
* @param projectType The detected project type
|
|
165
119
|
* @param versionType The type of version bump
|
|
166
120
|
* @param currentStep The current step number for progress display
|
|
@@ -168,34 +122,50 @@ async function syncVersionToDenoJson(version) {
|
|
|
168
122
|
* @returns The new version string
|
|
169
123
|
*/
|
|
170
124
|
export async function bumpProjectVersion(projectType, versionType, currentStep, totalSteps) {
|
|
125
|
+
if (projectType === 'none') {
|
|
126
|
+
throw new Error('Cannot bump version: no package.json or deno.json found');
|
|
127
|
+
}
|
|
171
128
|
const projectEmoji = projectType === 'npm' ? '📦' : projectType === 'deno' ? '🦕' : '🔀';
|
|
172
129
|
const description = `🏷️ Bumping version (${projectEmoji} ${projectType})`;
|
|
173
130
|
if (currentStep && totalSteps) {
|
|
174
131
|
ui.printStep(currentStep, totalSteps, description, 'in-progress');
|
|
175
132
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
133
|
+
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
134
|
+
executor: 'bash',
|
|
135
|
+
sourceFilePaths: [],
|
|
136
|
+
});
|
|
137
|
+
try {
|
|
138
|
+
// 1. Read current version
|
|
139
|
+
const currentVersion = readCurrentVersion(projectType);
|
|
140
|
+
// 2. Calculate new version (reuse existing function!)
|
|
141
|
+
const newVersion = calculateNewVersion(currentVersion, versionType);
|
|
142
|
+
logger.log('info', `Bumping version: ${currentVersion} → ${newVersion}`);
|
|
143
|
+
// 3. Determine which files to update
|
|
144
|
+
const filesToUpdate = [];
|
|
145
|
+
const packageJsonPath = plugins.path.join(paths.cwd, 'package.json');
|
|
146
|
+
const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
|
|
147
|
+
if (projectType === 'npm' || projectType === 'both') {
|
|
148
|
+
await updateVersionFile(packageJsonPath, newVersion);
|
|
149
|
+
filesToUpdate.push('package.json');
|
|
150
|
+
}
|
|
151
|
+
if (projectType === 'deno' || projectType === 'both') {
|
|
152
|
+
await updateVersionFile(denoJsonPath, newVersion);
|
|
153
|
+
filesToUpdate.push('deno.json');
|
|
190
154
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
155
|
+
// 4. Stage all updated files
|
|
156
|
+
await smartshellInstance.exec(`git add ${filesToUpdate.join(' ')}`);
|
|
157
|
+
// 5. Create version commit
|
|
158
|
+
await smartshellInstance.exec(`git commit -m "v${newVersion}"`);
|
|
159
|
+
// 6. Create version tag
|
|
160
|
+
await smartshellInstance.exec(`git tag v${newVersion} -m "v${newVersion}"`);
|
|
161
|
+
logger.log('info', `Created commit and tag v${newVersion}`);
|
|
162
|
+
if (currentStep && totalSteps) {
|
|
163
|
+
ui.printStep(currentStep, totalSteps, description, 'done');
|
|
164
|
+
}
|
|
165
|
+
return newVersion;
|
|
195
166
|
}
|
|
196
|
-
|
|
197
|
-
|
|
167
|
+
catch (error) {
|
|
168
|
+
throw new Error(`Failed to bump project version: ${error.message}`);
|
|
198
169
|
}
|
|
199
|
-
return newVersion;
|
|
200
170
|
}
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29tbWl0L21vZC5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEtBQUssTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBS2xDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CO0lBQ3ZDLElBQUksQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUMzRCxRQUFRLEVBQUUsTUFBTTtZQUNoQixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDJEQUEyRCxDQUFDLENBQUM7WUFDaEYsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDRCQUE0QixVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLEtBQUssQ0FBQyxPQUFPLDRCQUE0QixDQUFDLENBQUM7UUFDMUYsT0FBTyxRQUFRLENB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/cli",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.20.0",
|
|
5
5
|
"description": "A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.",
|
|
6
6
|
"main": "dist_ts/index.ts",
|
|
7
7
|
"typings": "dist_ts/index.d.ts",
|
package/readme.hints.md
CHANGED
|
@@ -89,6 +89,41 @@ The format module is responsible for project standardization:
|
|
|
89
89
|
5. **Performance Optimizations**: Parallel execution and caching
|
|
90
90
|
6. **Reporting**: Diff views, statistics, verbose logging
|
|
91
91
|
7. **Architecture**: Clean separation of concerns with new classes
|
|
92
|
+
8. **Unified Version Bumping**: Self-managed version updates eliminating npm warning pollution in deno.json
|
|
93
|
+
|
|
94
|
+
### Version Bumping Refactor (Latest)
|
|
95
|
+
|
|
96
|
+
The commit module's version bumping has been refactored to eliminate npm command dependencies:
|
|
97
|
+
|
|
98
|
+
**Changes:**
|
|
99
|
+
- Removed `bumpNpmVersion()` - was causing npm warnings to pollute deno.json
|
|
100
|
+
- Removed `syncVersionToDenoJson()` - no longer needed with unified approach
|
|
101
|
+
- Removed separate `bumpDenoVersion()` - replaced by unified implementation
|
|
102
|
+
- Added `readCurrentVersion()` helper - reads from either package.json or deno.json
|
|
103
|
+
- Added `updateVersionFile()` helper - updates JSON files directly
|
|
104
|
+
- Unified `bumpProjectVersion()` - handles npm/deno/both with single clean code path
|
|
105
|
+
|
|
106
|
+
**Benefits:**
|
|
107
|
+
- No npm warning pollution in version fields
|
|
108
|
+
- Full control over version bumping process
|
|
109
|
+
- Simpler git history (no amending, no force-tagging)
|
|
110
|
+
- Same code path for all project types
|
|
111
|
+
- Reuses existing `calculateNewVersion()` function
|
|
112
|
+
|
|
113
|
+
### Auto-Accept Flag for Commits
|
|
114
|
+
|
|
115
|
+
The commit module now supports `-y/--yes` flag for non-interactive commits:
|
|
116
|
+
|
|
117
|
+
**Usage:**
|
|
118
|
+
- `gitzone commit -y` - Auto-accepts AI recommendations without prompts
|
|
119
|
+
- `gitzone commit -yp` - Auto-accepts and pushes to origin
|
|
120
|
+
- Separate `-p/--push` flag controls push behavior
|
|
121
|
+
|
|
122
|
+
**Implementation:**
|
|
123
|
+
- Creates AnswerBucket programmatically when `-y` flag detected
|
|
124
|
+
- Preserves all UI output for transparency
|
|
125
|
+
- Fully backward compatible with interactive mode
|
|
126
|
+
- CI/CD friendly for automated workflows
|
|
92
127
|
|
|
93
128
|
## Development Tips
|
|
94
129
|
|
|
@@ -137,6 +172,27 @@ The format module is responsible for project standardization:
|
|
|
137
172
|
|
|
138
173
|
## CLI Usage
|
|
139
174
|
|
|
175
|
+
### Commit Commands
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Interactive commit (default)
|
|
179
|
+
gitzone commit
|
|
180
|
+
|
|
181
|
+
# Auto-accept AI recommendations (no prompts)
|
|
182
|
+
gitzone commit -y
|
|
183
|
+
gitzone commit --yes
|
|
184
|
+
|
|
185
|
+
# Auto-accept and push to origin
|
|
186
|
+
gitzone commit -yp
|
|
187
|
+
gitzone commit -y -p
|
|
188
|
+
gitzone commit --yes --push
|
|
189
|
+
|
|
190
|
+
# Run format before commit
|
|
191
|
+
gitzone commit --format
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Format Commands
|
|
195
|
+
|
|
140
196
|
```bash
|
|
141
197
|
# Basic format
|
|
142
198
|
gitzone format
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/cli',
|
|
6
|
-
version: '1.
|
|
6
|
+
version: '1.20.0',
|
|
7
7
|
description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.'
|
|
8
8
|
}
|
package/ts/mod_commit/index.ts
CHANGED
|
@@ -27,35 +27,63 @@ export const run = async (argvArg: any) => {
|
|
|
27
27
|
recommendedNextVersionScope: nextCommitObject.recommendedNextVersionScope,
|
|
28
28
|
recommendedNextVersionMessage: nextCommitObject.recommendedNextVersionMessage,
|
|
29
29
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
{
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
30
|
+
|
|
31
|
+
let answerBucket: plugins.smartinteract.AnswerBucket;
|
|
32
|
+
|
|
33
|
+
// Check if -y or --yes flag is set to auto-accept recommendations
|
|
34
|
+
if (argvArg.y || argvArg.yes) {
|
|
35
|
+
// Auto-mode: create AnswerBucket programmatically
|
|
36
|
+
logger.log('info', '✓ Auto-accepting AI recommendations (--yes flag)');
|
|
37
|
+
|
|
38
|
+
answerBucket = new plugins.smartinteract.AnswerBucket();
|
|
39
|
+
answerBucket.addAnswer({
|
|
40
|
+
name: 'commitType',
|
|
41
|
+
value: nextCommitObject.recommendedNextVersionLevel,
|
|
42
|
+
});
|
|
43
|
+
answerBucket.addAnswer({
|
|
44
|
+
name: 'commitScope',
|
|
45
|
+
value: nextCommitObject.recommendedNextVersionScope,
|
|
46
|
+
});
|
|
47
|
+
answerBucket.addAnswer({
|
|
48
|
+
name: 'commitDescription',
|
|
49
|
+
value: nextCommitObject.recommendedNextVersionMessage,
|
|
50
|
+
});
|
|
51
|
+
answerBucket.addAnswer({
|
|
52
|
+
name: 'pushToOrigin',
|
|
53
|
+
value: !!(argvArg.p || argvArg.push), // Only push if -p flag also provided
|
|
54
|
+
});
|
|
55
|
+
} else {
|
|
56
|
+
// Interactive mode: prompt user for input
|
|
57
|
+
const commitInteract = new plugins.smartinteract.SmartInteract();
|
|
58
|
+
commitInteract.addQuestions([
|
|
59
|
+
{
|
|
60
|
+
type: 'list',
|
|
61
|
+
name: `commitType`,
|
|
62
|
+
message: `Choose TYPE of the commit:`,
|
|
63
|
+
choices: [`fix`, `feat`, `BREAKING CHANGE`],
|
|
64
|
+
default: nextCommitObject.recommendedNextVersionLevel,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: 'input',
|
|
68
|
+
name: `commitScope`,
|
|
69
|
+
message: `What is the SCOPE of the commit:`,
|
|
70
|
+
default: nextCommitObject.recommendedNextVersionScope,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: `input`,
|
|
74
|
+
name: `commitDescription`,
|
|
75
|
+
message: `What is the DESCRIPTION of the commit?`,
|
|
76
|
+
default: nextCommitObject.recommendedNextVersionMessage,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'confirm',
|
|
80
|
+
name: `pushToOrigin`,
|
|
81
|
+
message: `Do you want to push this version now?`,
|
|
82
|
+
default: true,
|
|
83
|
+
},
|
|
84
|
+
]);
|
|
85
|
+
answerBucket = await commitInteract.runQueue();
|
|
86
|
+
}
|
|
59
87
|
const commitString = createCommitStringFromAnswerBucket(answerBucket);
|
|
60
88
|
const commitVersionType = (() => {
|
|
61
89
|
switch (answerBucket.getAnswerFor('commitType')) {
|
|
@@ -91,118 +91,47 @@ function calculateNewVersion(currentVersion: string, versionType: VersionType):
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
|
-
*
|
|
95
|
-
* @param
|
|
96
|
-
* @returns The
|
|
94
|
+
* Reads the current version from package.json or deno.json
|
|
95
|
+
* @param projectType The project type to determine which file to read
|
|
96
|
+
* @returns The current version string
|
|
97
97
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
sourceFilePaths: [],
|
|
103
|
-
});
|
|
98
|
+
function readCurrentVersion(projectType: ProjectType): string {
|
|
99
|
+
if (projectType === 'npm' || projectType === 'both') {
|
|
100
|
+
const packageJsonPath = plugins.path.join(paths.cwd, 'package.json');
|
|
101
|
+
const packageJson = plugins.smartfile.fs.toObjectSync(packageJsonPath) as { version?: string };
|
|
104
102
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
103
|
+
if (!packageJson.version) {
|
|
104
|
+
throw new Error('package.json does not contain a version field');
|
|
105
|
+
}
|
|
106
|
+
return packageJson.version;
|
|
107
|
+
} else {
|
|
108
|
+
const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
|
|
109
|
+
const denoConfig = plugins.smartfile.fs.toObjectSync(denoJsonPath) as { version?: string };
|
|
110
110
|
|
|
111
111
|
if (!denoConfig.version) {
|
|
112
112
|
throw new Error('deno.json does not contain a version field');
|
|
113
113
|
}
|
|
114
|
-
|
|
115
|
-
const currentVersion = denoConfig.version;
|
|
116
|
-
const newVersion = calculateNewVersion(currentVersion, versionType);
|
|
117
|
-
|
|
118
|
-
logger.log('info', `Bumping deno.json version: ${currentVersion} → ${newVersion}`);
|
|
119
|
-
|
|
120
|
-
// Update version
|
|
121
|
-
denoConfig.version = newVersion;
|
|
122
|
-
|
|
123
|
-
// Write back to disk
|
|
124
|
-
await plugins.smartfile.memory.toFs(
|
|
125
|
-
JSON.stringify(denoConfig, null, 2) + '\n',
|
|
126
|
-
denoJsonPath
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
// Stage the deno.json file
|
|
130
|
-
await smartshellInstance.exec('git add deno.json');
|
|
131
|
-
|
|
132
|
-
// Commit the version bump
|
|
133
|
-
await smartshellInstance.exec(`git commit -m "v${newVersion}"`);
|
|
134
|
-
|
|
135
|
-
// Create the version tag
|
|
136
|
-
await smartshellInstance.exec(`git tag v${newVersion} -m "v${newVersion}"`);
|
|
137
|
-
|
|
138
|
-
logger.log('info', `Created commit and tag v${newVersion}`);
|
|
139
|
-
|
|
140
|
-
return newVersion;
|
|
141
|
-
} catch (error) {
|
|
142
|
-
throw new Error(`Failed to bump deno.json version: ${error.message}`);
|
|
114
|
+
return denoConfig.version;
|
|
143
115
|
}
|
|
144
116
|
}
|
|
145
117
|
|
|
146
118
|
/**
|
|
147
|
-
*
|
|
148
|
-
* @param
|
|
149
|
-
* @
|
|
119
|
+
* Updates the version field in a JSON file (package.json or deno.json)
|
|
120
|
+
* @param filePath Path to the JSON file
|
|
121
|
+
* @param newVersion The new version to write
|
|
150
122
|
*/
|
|
151
|
-
async function
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const result = await smartshellInstance.exec(`npm version ${versionType}`);
|
|
159
|
-
|
|
160
|
-
// npm version returns the new version with a 'v' prefix, e.g., "v1.2.3"
|
|
161
|
-
const newVersion = result.stdout.trim().replace(/^v/, '');
|
|
162
|
-
return newVersion;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Syncs the version from package.json to deno.json and amends the npm commit
|
|
167
|
-
* @param version The version to sync
|
|
168
|
-
*/
|
|
169
|
-
async function syncVersionToDenoJson(version: string): Promise<void> {
|
|
170
|
-
const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
|
|
171
|
-
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
172
|
-
executor: 'bash',
|
|
173
|
-
sourceFilePaths: [],
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
try {
|
|
177
|
-
const denoConfig = plugins.smartfile.fs.toObjectSync(
|
|
178
|
-
denoJsonPath
|
|
179
|
-
) as { version?: string };
|
|
180
|
-
|
|
181
|
-
logger.log('info', `Syncing version to deno.json: ${version}`);
|
|
182
|
-
denoConfig.version = version;
|
|
183
|
-
|
|
184
|
-
await plugins.smartfile.memory.toFs(
|
|
185
|
-
JSON.stringify(denoConfig, null, 2) + '\n',
|
|
186
|
-
denoJsonPath
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
// Stage the deno.json file
|
|
190
|
-
await smartshellInstance.exec('git add deno.json');
|
|
191
|
-
|
|
192
|
-
// Amend the npm version commit to include deno.json
|
|
193
|
-
await smartshellInstance.exec('git commit --amend --no-edit');
|
|
194
|
-
|
|
195
|
-
// Re-create the tag with force to update it
|
|
196
|
-
await smartshellInstance.exec(`git tag -fa v${version} -m "v${version}"`);
|
|
197
|
-
|
|
198
|
-
logger.log('info', `Amended commit to include deno.json and updated tag v${version}`);
|
|
199
|
-
} catch (error) {
|
|
200
|
-
throw new Error(`Failed to sync version to deno.json: ${error.message}`);
|
|
201
|
-
}
|
|
123
|
+
async function updateVersionFile(filePath: string, newVersion: string): Promise<void> {
|
|
124
|
+
const config = plugins.smartfile.fs.toObjectSync(filePath) as { version?: string };
|
|
125
|
+
config.version = newVersion;
|
|
126
|
+
await plugins.smartfile.memory.toFs(
|
|
127
|
+
JSON.stringify(config, null, 2) + '\n',
|
|
128
|
+
filePath
|
|
129
|
+
);
|
|
202
130
|
}
|
|
203
131
|
|
|
204
132
|
/**
|
|
205
133
|
* Bumps the project version based on project type
|
|
134
|
+
* Handles npm-only, deno-only, and dual projects with unified logic
|
|
206
135
|
* @param projectType The detected project type
|
|
207
136
|
* @param versionType The type of version bump
|
|
208
137
|
* @param currentStep The current step number for progress display
|
|
@@ -215,6 +144,10 @@ export async function bumpProjectVersion(
|
|
|
215
144
|
currentStep?: number,
|
|
216
145
|
totalSteps?: number
|
|
217
146
|
): Promise<string> {
|
|
147
|
+
if (projectType === 'none') {
|
|
148
|
+
throw new Error('Cannot bump version: no package.json or deno.json found');
|
|
149
|
+
}
|
|
150
|
+
|
|
218
151
|
const projectEmoji = projectType === 'npm' ? '📦' : projectType === 'deno' ? '🦕' : '🔀';
|
|
219
152
|
const description = `🏷️ Bumping version (${projectEmoji} ${projectType})`;
|
|
220
153
|
|
|
@@ -222,35 +155,52 @@ export async function bumpProjectVersion(
|
|
|
222
155
|
ui.printStep(currentStep, totalSteps, description, 'in-progress');
|
|
223
156
|
}
|
|
224
157
|
|
|
225
|
-
|
|
158
|
+
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
159
|
+
executor: 'bash',
|
|
160
|
+
sourceFilePaths: [],
|
|
161
|
+
});
|
|
226
162
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
break;
|
|
163
|
+
try {
|
|
164
|
+
// 1. Read current version
|
|
165
|
+
const currentVersion = readCurrentVersion(projectType);
|
|
231
166
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
break;
|
|
167
|
+
// 2. Calculate new version (reuse existing function!)
|
|
168
|
+
const newVersion = calculateNewVersion(currentVersion, versionType);
|
|
235
169
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
170
|
+
logger.log('info', `Bumping version: ${currentVersion} → ${newVersion}`);
|
|
171
|
+
|
|
172
|
+
// 3. Determine which files to update
|
|
173
|
+
const filesToUpdate: string[] = [];
|
|
174
|
+
const packageJsonPath = plugins.path.join(paths.cwd, 'package.json');
|
|
175
|
+
const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
|
|
176
|
+
|
|
177
|
+
if (projectType === 'npm' || projectType === 'both') {
|
|
178
|
+
await updateVersionFile(packageJsonPath, newVersion);
|
|
179
|
+
filesToUpdate.push('package.json');
|
|
242
180
|
}
|
|
243
181
|
|
|
244
|
-
|
|
245
|
-
|
|
182
|
+
if (projectType === 'deno' || projectType === 'both') {
|
|
183
|
+
await updateVersionFile(denoJsonPath, newVersion);
|
|
184
|
+
filesToUpdate.push('deno.json');
|
|
185
|
+
}
|
|
246
186
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
187
|
+
// 4. Stage all updated files
|
|
188
|
+
await smartshellInstance.exec(`git add ${filesToUpdate.join(' ')}`);
|
|
250
189
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}
|
|
190
|
+
// 5. Create version commit
|
|
191
|
+
await smartshellInstance.exec(`git commit -m "v${newVersion}"`);
|
|
254
192
|
|
|
255
|
-
|
|
193
|
+
// 6. Create version tag
|
|
194
|
+
await smartshellInstance.exec(`git tag v${newVersion} -m "v${newVersion}"`);
|
|
195
|
+
|
|
196
|
+
logger.log('info', `Created commit and tag v${newVersion}`);
|
|
197
|
+
|
|
198
|
+
if (currentStep && totalSteps) {
|
|
199
|
+
ui.printStep(currentStep, totalSteps, description, 'done');
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return newVersion;
|
|
203
|
+
} catch (error) {
|
|
204
|
+
throw new Error(`Failed to bump project version: ${error.message}`);
|
|
205
|
+
}
|
|
256
206
|
}
|