@git.zone/cli 1.18.9 â 1.19.1
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 +53 -17
- package/dist_ts/mod_commit/mod.helpers.d.ts +3 -1
- package/dist_ts/mod_commit/mod.helpers.js +21 -6
- package/dist_ts/mod_commit/mod.ui.d.ts +61 -0
- package/dist_ts/mod_commit/mod.ui.js +147 -0
- package/package.json +9 -9
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/mod_commit/index.ts +58 -19
- package/ts/mod_commit/mod.helpers.ts +27 -5
- package/ts/mod_commit/mod.ui.ts +196 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/cli',
|
|
6
|
-
version: '1.
|
|
6
|
+
version: '1.19.1',
|
|
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
|
|
@@ -3,23 +3,23 @@ import * as plugins from './mod.plugins.js';
|
|
|
3
3
|
import * as paths from '../paths.js';
|
|
4
4
|
import { logger } from '../gitzone.logging.js';
|
|
5
5
|
import * as helpers from './mod.helpers.js';
|
|
6
|
+
import * as ui from './mod.ui.js';
|
|
6
7
|
export const run = async (argvArg) => {
|
|
7
8
|
if (argvArg.format) {
|
|
8
9
|
const formatMod = await import('../mod_format/index.js');
|
|
9
10
|
await formatMod.run();
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
+
ui.printHeader('đ Analyzing repository changes...');
|
|
12
13
|
const aidoc = new plugins.tsdoc.AiDoc();
|
|
13
14
|
await aidoc.start();
|
|
14
15
|
const nextCommitObject = await aidoc.buildNextCommitObject(paths.cwd);
|
|
15
16
|
await aidoc.stop();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
`);
|
|
17
|
+
ui.printRecommendation({
|
|
18
|
+
recommendedNextVersion: nextCommitObject.recommendedNextVersion,
|
|
19
|
+
recommendedNextVersionLevel: nextCommitObject.recommendedNextVersionLevel,
|
|
20
|
+
recommendedNextVersionScope: nextCommitObject.recommendedNextVersionScope,
|
|
21
|
+
recommendedNextVersionMessage: nextCommitObject.recommendedNextVersionMessage,
|
|
22
|
+
});
|
|
23
23
|
const commitInteract = new plugins.smartinteract.SmartInteract();
|
|
24
24
|
commitInteract.addQuestions([
|
|
25
25
|
{
|
|
@@ -60,15 +60,24 @@ export const run = async (argvArg) => {
|
|
|
60
60
|
return 'major';
|
|
61
61
|
}
|
|
62
62
|
})();
|
|
63
|
-
|
|
63
|
+
ui.printHeader('⨠Creating Semantic Commit');
|
|
64
|
+
ui.printCommitMessage(commitString);
|
|
64
65
|
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
65
66
|
executor: 'bash',
|
|
66
67
|
sourceFilePaths: [],
|
|
67
68
|
});
|
|
68
|
-
|
|
69
|
+
// Determine total steps (6 if pushing, 5 if not)
|
|
70
|
+
const totalSteps = answerBucket.getAnswerFor('pushToOrigin') && !(process.env.CI === 'true') ? 6 : 5;
|
|
71
|
+
let currentStep = 0;
|
|
72
|
+
// Step 1: Baking commitinfo
|
|
73
|
+
currentStep++;
|
|
74
|
+
ui.printStep(currentStep, totalSteps, 'đ§ Baking commit info into code', 'in-progress');
|
|
69
75
|
const commitInfo = new plugins.commitinfo.CommitInfo(paths.cwd, commitVersionType);
|
|
70
76
|
await commitInfo.writeIntoPotentialDirs();
|
|
71
|
-
|
|
77
|
+
ui.printStep(currentStep, totalSteps, 'đ§ Baking commit info into code', 'done');
|
|
78
|
+
// Step 2: Writing changelog
|
|
79
|
+
currentStep++;
|
|
80
|
+
ui.printStep(currentStep, totalSteps, 'đ Generating changelog.md', 'in-progress');
|
|
72
81
|
let changelog = nextCommitObject.changelog;
|
|
73
82
|
changelog = changelog.replaceAll('{{nextVersion}}', (await commitInfo.getNextPlannedVersion()).versionString);
|
|
74
83
|
changelog = changelog.replaceAll('{{nextVersionScope}}', `${await answerBucket.getAnswerFor('commitType')}(${await answerBucket.getAnswerFor('commitScope')})`);
|
|
@@ -80,18 +89,45 @@ export const run = async (argvArg) => {
|
|
|
80
89
|
changelog = changelog.replaceAll('\n{{nextVersionDetails}}', '');
|
|
81
90
|
}
|
|
82
91
|
await plugins.smartfile.memory.toFs(changelog, plugins.path.join(paths.cwd, `changelog.md`));
|
|
83
|
-
|
|
92
|
+
ui.printStep(currentStep, totalSteps, 'đ Generating changelog.md', 'done');
|
|
93
|
+
// Step 3: Staging files
|
|
94
|
+
currentStep++;
|
|
95
|
+
ui.printStep(currentStep, totalSteps, 'đĻ Staging files', 'in-progress');
|
|
84
96
|
await smartshellInstance.exec(`git add -A`);
|
|
97
|
+
ui.printStep(currentStep, totalSteps, 'đĻ Staging files', 'done');
|
|
98
|
+
// Step 4: Creating commit
|
|
99
|
+
currentStep++;
|
|
100
|
+
ui.printStep(currentStep, totalSteps, 'đž Creating git commit', 'in-progress');
|
|
85
101
|
await smartshellInstance.exec(`git commit -m "${commitString}"`);
|
|
86
|
-
|
|
102
|
+
ui.printStep(currentStep, totalSteps, 'đž Creating git commit', 'done');
|
|
103
|
+
// Step 5: Bumping version
|
|
104
|
+
currentStep++;
|
|
87
105
|
const projectType = await helpers.detectProjectType();
|
|
88
|
-
await helpers.bumpProjectVersion(projectType, commitVersionType);
|
|
106
|
+
const newVersion = await helpers.bumpProjectVersion(projectType, commitVersionType, currentStep, totalSteps);
|
|
107
|
+
// Step 6: Push to remote (optional)
|
|
108
|
+
const currentBranch = await helpers.detectCurrentBranch();
|
|
89
109
|
if (answerBucket.getAnswerFor('pushToOrigin') &&
|
|
90
110
|
!(process.env.CI === 'true')) {
|
|
91
|
-
|
|
92
|
-
|
|
111
|
+
currentStep++;
|
|
112
|
+
ui.printStep(currentStep, totalSteps, `đ Pushing to origin/${currentBranch}`, 'in-progress');
|
|
93
113
|
await smartshellInstance.exec(`git push origin ${currentBranch} --follow-tags`);
|
|
114
|
+
ui.printStep(currentStep, totalSteps, `đ Pushing to origin/${currentBranch}`, 'done');
|
|
94
115
|
}
|
|
116
|
+
console.log(''); // Add spacing before summary
|
|
117
|
+
// Get commit SHA for summary
|
|
118
|
+
const commitShaResult = await smartshellInstance.exec('git rev-parse --short HEAD');
|
|
119
|
+
const commitSha = commitShaResult.stdout.trim();
|
|
120
|
+
// Print final summary
|
|
121
|
+
ui.printSummary({
|
|
122
|
+
projectType,
|
|
123
|
+
branch: currentBranch,
|
|
124
|
+
commitType: answerBucket.getAnswerFor('commitType'),
|
|
125
|
+
commitScope: answerBucket.getAnswerFor('commitScope'),
|
|
126
|
+
commitMessage: answerBucket.getAnswerFor('commitDescription'),
|
|
127
|
+
newVersion: newVersion,
|
|
128
|
+
commitSha: commitSha,
|
|
129
|
+
pushed: answerBucket.getAnswerFor('pushToOrigin') && !(process.env.CI === 'true'),
|
|
130
|
+
});
|
|
95
131
|
};
|
|
96
132
|
const createCommitStringFromAnswerBucket = (answerBucket) => {
|
|
97
133
|
const commitType = answerBucket.getAnswerFor('commitType');
|
|
@@ -99,4 +135,4 @@ const createCommitStringFromAnswerBucket = (answerBucket) => {
|
|
|
99
135
|
const commitDescription = answerBucket.getAnswerFor('commitDescription');
|
|
100
136
|
return `${commitType}(${commitScope}): ${commitDescription}`;
|
|
101
137
|
};
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29tbWl0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBRXJELE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QyxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVwQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sS0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV0RSxNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQixFQUFFLENBQUMsbUJBQW1CLENBQUM7UUFDckIsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsc0JBQXNCO1FBQy9ELDJCQUEyQixFQUFFLGdCQUFnQixDQUFDLDJCQUEyQjtRQUN6RSwyQkFBMkIsRUFBRSxnQkFBZ0IsQ0FBQywyQkFBMkI7UUFD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
|
|
@@ -20,6 +20,8 @@ export declare function bumpDenoVersion(versionType: VersionType): Promise<strin
|
|
|
20
20
|
* Bumps the project version based on project type
|
|
21
21
|
* @param projectType The detected project type
|
|
22
22
|
* @param versionType The type of version bump
|
|
23
|
+
* @param currentStep The current step number for progress display
|
|
24
|
+
* @param totalSteps The total number of steps for progress display
|
|
23
25
|
* @returns The new version string
|
|
24
26
|
*/
|
|
25
|
-
export declare function bumpProjectVersion(projectType: ProjectType, versionType: VersionType): Promise<string>;
|
|
27
|
+
export declare function bumpProjectVersion(projectType: ProjectType, versionType: VersionType, currentStep?: number, totalSteps?: number): Promise<string>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as plugins from './mod.plugins.js';
|
|
2
2
|
import * as paths from '../paths.js';
|
|
3
3
|
import { logger } from '../gitzone.logging.js';
|
|
4
|
+
import * as ui from './mod.ui.js';
|
|
4
5
|
/**
|
|
5
6
|
* Detects the current git branch
|
|
6
7
|
* @returns The current branch name, defaults to 'master' if detection fails
|
|
@@ -162,25 +163,39 @@ async function syncVersionToDenoJson(version) {
|
|
|
162
163
|
* Bumps the project version based on project type
|
|
163
164
|
* @param projectType The detected project type
|
|
164
165
|
* @param versionType The type of version bump
|
|
166
|
+
* @param currentStep The current step number for progress display
|
|
167
|
+
* @param totalSteps The total number of steps for progress display
|
|
165
168
|
* @returns The new version string
|
|
166
169
|
*/
|
|
167
|
-
export async function bumpProjectVersion(projectType, versionType) {
|
|
170
|
+
export async function bumpProjectVersion(projectType, versionType, currentStep, totalSteps) {
|
|
171
|
+
const projectEmoji = projectType === 'npm' ? 'đĻ' : projectType === 'deno' ? 'đĻ' : 'đ';
|
|
172
|
+
const description = `đˇī¸ Bumping version (${projectEmoji} ${projectType})`;
|
|
173
|
+
if (currentStep && totalSteps) {
|
|
174
|
+
ui.printStep(currentStep, totalSteps, description, 'in-progress');
|
|
175
|
+
}
|
|
176
|
+
let newVersion;
|
|
168
177
|
switch (projectType) {
|
|
169
178
|
case 'npm':
|
|
170
|
-
|
|
179
|
+
newVersion = await bumpNpmVersion(versionType);
|
|
180
|
+
break;
|
|
171
181
|
case 'deno':
|
|
172
|
-
|
|
182
|
+
newVersion = await bumpDenoVersion(versionType);
|
|
183
|
+
break;
|
|
173
184
|
case 'both': {
|
|
174
185
|
// Bump npm version first (it handles git tags)
|
|
175
|
-
|
|
186
|
+
newVersion = await bumpNpmVersion(versionType);
|
|
176
187
|
// Then sync to deno.json
|
|
177
188
|
await syncVersionToDenoJson(newVersion);
|
|
178
|
-
|
|
189
|
+
break;
|
|
179
190
|
}
|
|
180
191
|
case 'none':
|
|
181
192
|
throw new Error('Cannot bump version: no package.json or deno.json found');
|
|
182
193
|
default:
|
|
183
194
|
throw new Error(`Unknown project type: ${projectType}`);
|
|
184
195
|
}
|
|
196
|
+
if (currentStep && totalSteps) {
|
|
197
|
+
ui.printStep(currentStep, totalSteps, description, 'done');
|
|
198
|
+
}
|
|
199
|
+
return newVersion;
|
|
185
200
|
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29tbWl0L21vZC5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEtBQUssTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBS2xDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CO0lBQ3ZDLElBQUksQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUMzRCxRQUFRLEVBQUUsTUFBTTtZQUNoQixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDJEQUEyRCxDQUFDLENBQUM7WUFDaEYsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDRCQUE0QixVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLEtBQUssQ0FBQyxPQUFPLDRCQUE0QixDQUFDLENBQUM7UUFDMUYsT0FBTyxRQUFRLENB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
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI helper module for beautiful CLI output
|
|
3
|
+
*/
|
|
4
|
+
interface ICommitSummary {
|
|
5
|
+
projectType: string;
|
|
6
|
+
branch: string;
|
|
7
|
+
commitType: string;
|
|
8
|
+
commitScope: string;
|
|
9
|
+
commitMessage: string;
|
|
10
|
+
newVersion: string;
|
|
11
|
+
commitSha?: string;
|
|
12
|
+
pushed: boolean;
|
|
13
|
+
repoUrl?: string;
|
|
14
|
+
}
|
|
15
|
+
interface IRecommendation {
|
|
16
|
+
recommendedNextVersion: string;
|
|
17
|
+
recommendedNextVersionLevel: string;
|
|
18
|
+
recommendedNextVersionScope: string;
|
|
19
|
+
recommendedNextVersionMessage: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Print a header with a box around it
|
|
23
|
+
*/
|
|
24
|
+
export declare function printHeader(title: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Print a section with a border
|
|
27
|
+
*/
|
|
28
|
+
export declare function printSection(title: string, lines: string[]): void;
|
|
29
|
+
/**
|
|
30
|
+
* Print AI recommendations in a nice box
|
|
31
|
+
*/
|
|
32
|
+
export declare function printRecommendation(recommendation: IRecommendation): void;
|
|
33
|
+
/**
|
|
34
|
+
* Print a progress step
|
|
35
|
+
*/
|
|
36
|
+
export declare function printStep(current: number, total: number, description: string, status: 'in-progress' | 'done' | 'error'): void;
|
|
37
|
+
/**
|
|
38
|
+
* Print final commit summary
|
|
39
|
+
*/
|
|
40
|
+
export declare function printSummary(summary: ICommitSummary): void;
|
|
41
|
+
/**
|
|
42
|
+
* Print an info message with consistent formatting
|
|
43
|
+
*/
|
|
44
|
+
export declare function printInfo(message: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Print a success message
|
|
47
|
+
*/
|
|
48
|
+
export declare function printSuccess(message: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Print a warning message
|
|
51
|
+
*/
|
|
52
|
+
export declare function printWarning(message: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Print an error message
|
|
55
|
+
*/
|
|
56
|
+
export declare function printError(message: string): void;
|
|
57
|
+
/**
|
|
58
|
+
* Print commit message being created
|
|
59
|
+
*/
|
|
60
|
+
export declare function printCommitMessage(commitString: string): void;
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { logger } from '../gitzone.logging.js';
|
|
2
|
+
/**
|
|
3
|
+
* Print a header with a box around it
|
|
4
|
+
*/
|
|
5
|
+
export function printHeader(title) {
|
|
6
|
+
const width = 57;
|
|
7
|
+
const padding = Math.max(0, width - title.length - 2);
|
|
8
|
+
const leftPad = Math.floor(padding / 2);
|
|
9
|
+
const rightPad = padding - leftPad;
|
|
10
|
+
console.log('');
|
|
11
|
+
console.log('ââ' + 'â'.repeat(width) + 'ââŽ');
|
|
12
|
+
console.log('â ' + title + ' '.repeat(rightPad + leftPad) + ' â');
|
|
13
|
+
console.log('â°â' + 'â'.repeat(width) + 'ââ¯');
|
|
14
|
+
console.log('');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Print a section with a border
|
|
18
|
+
*/
|
|
19
|
+
export function printSection(title, lines) {
|
|
20
|
+
const width = 59;
|
|
21
|
+
console.log('ââ ' + title + ' ' + 'â'.repeat(Math.max(0, width - title.length - 3)) + 'â');
|
|
22
|
+
console.log('â' + ' '.repeat(width) + 'â');
|
|
23
|
+
for (const line of lines) {
|
|
24
|
+
const padding = width - line.length;
|
|
25
|
+
console.log('â ' + line + ' '.repeat(Math.max(0, padding - 2)) + 'â');
|
|
26
|
+
}
|
|
27
|
+
console.log('â' + ' '.repeat(width) + 'â');
|
|
28
|
+
console.log('ââ' + 'â'.repeat(width) + 'ââ');
|
|
29
|
+
console.log('');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Print AI recommendations in a nice box
|
|
33
|
+
*/
|
|
34
|
+
export function printRecommendation(recommendation) {
|
|
35
|
+
const lines = [
|
|
36
|
+
`Suggested Version: v${recommendation.recommendedNextVersion}`,
|
|
37
|
+
`Suggested Type: ${recommendation.recommendedNextVersionLevel}`,
|
|
38
|
+
`Suggested Scope: ${recommendation.recommendedNextVersionScope}`,
|
|
39
|
+
`Suggested Message: ${recommendation.recommendedNextVersionMessage}`,
|
|
40
|
+
];
|
|
41
|
+
printSection('đ AI Recommendations', lines);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Print a progress step
|
|
45
|
+
*/
|
|
46
|
+
export function printStep(current, total, description, status) {
|
|
47
|
+
const statusIcon = status === 'done' ? 'â' : status === 'error' ? 'â' : 'âŗ';
|
|
48
|
+
const dots = '.'.repeat(Math.max(0, 40 - description.length));
|
|
49
|
+
console.log(` [${current}/${total}] ${description}${dots} ${statusIcon}`);
|
|
50
|
+
// Clear the line on next update if in progress
|
|
51
|
+
if (status === 'in-progress') {
|
|
52
|
+
process.stdout.write('\x1b[1A'); // Move cursor up one line
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get emoji for project type
|
|
57
|
+
*/
|
|
58
|
+
function getProjectTypeEmoji(projectType) {
|
|
59
|
+
switch (projectType) {
|
|
60
|
+
case 'npm':
|
|
61
|
+
return 'đĻ npm';
|
|
62
|
+
case 'deno':
|
|
63
|
+
return 'đĻ Deno';
|
|
64
|
+
case 'both':
|
|
65
|
+
return 'đ npm + Deno';
|
|
66
|
+
default:
|
|
67
|
+
return 'â Unknown';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get emoji for commit type
|
|
72
|
+
*/
|
|
73
|
+
function getCommitTypeEmoji(commitType) {
|
|
74
|
+
switch (commitType) {
|
|
75
|
+
case 'fix':
|
|
76
|
+
return 'đ§ fix';
|
|
77
|
+
case 'feat':
|
|
78
|
+
return '⨠feat';
|
|
79
|
+
case 'BREAKING CHANGE':
|
|
80
|
+
return 'đĨ BREAKING CHANGE';
|
|
81
|
+
default:
|
|
82
|
+
return commitType;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Print final commit summary
|
|
87
|
+
*/
|
|
88
|
+
export function printSummary(summary) {
|
|
89
|
+
const lines = [
|
|
90
|
+
`Project Type: ${getProjectTypeEmoji(summary.projectType)}`,
|
|
91
|
+
`Branch: đŋ ${summary.branch}`,
|
|
92
|
+
`Commit Type: ${getCommitTypeEmoji(summary.commitType)}`,
|
|
93
|
+
`Scope: đ ${summary.commitScope}`,
|
|
94
|
+
`New Version: đˇī¸ v${summary.newVersion}`,
|
|
95
|
+
];
|
|
96
|
+
if (summary.commitSha) {
|
|
97
|
+
lines.push(`Commit SHA: đ ${summary.commitSha}`);
|
|
98
|
+
}
|
|
99
|
+
if (summary.pushed) {
|
|
100
|
+
lines.push(`Remote: â Pushed successfully`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
lines.push(`Remote: â Not pushed (local only)`);
|
|
104
|
+
}
|
|
105
|
+
if (summary.repoUrl && summary.commitSha) {
|
|
106
|
+
lines.push('');
|
|
107
|
+
lines.push(`View at: ${summary.repoUrl}/commit/${summary.commitSha}`);
|
|
108
|
+
}
|
|
109
|
+
printSection('â
Commit Summary', lines);
|
|
110
|
+
if (summary.pushed) {
|
|
111
|
+
console.log('đ All done! Your changes are committed and pushed.\n');
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
console.log('â Commit created successfully.\n');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Print an info message with consistent formatting
|
|
119
|
+
*/
|
|
120
|
+
export function printInfo(message) {
|
|
121
|
+
console.log(` âšī¸ ${message}`);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Print a success message
|
|
125
|
+
*/
|
|
126
|
+
export function printSuccess(message) {
|
|
127
|
+
console.log(` â ${message}`);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Print a warning message
|
|
131
|
+
*/
|
|
132
|
+
export function printWarning(message) {
|
|
133
|
+
logger.log('warn', `â ī¸ ${message}`);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Print an error message
|
|
137
|
+
*/
|
|
138
|
+
export function printError(message) {
|
|
139
|
+
logger.log('error', `â ${message}`);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Print commit message being created
|
|
143
|
+
*/
|
|
144
|
+
export function printCommitMessage(commitString) {
|
|
145
|
+
console.log(`\n đ Commit: ${commitString}\n`);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kLnVpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbW9kX2NvbW1pdC9tb2QudWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBeUIvQzs7R0FFRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYTtJQUN2QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUVuQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWEsRUFBRSxLQUFlO0lBQ3pELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUVqQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMzRixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBRTNDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxjQUErQjtJQUNqRSxNQUFNLEtBQUssR0FBRztRQUNaLHdCQUF3QixjQUFjLENBQUMsc0JBQXNCLEVBQUU7UUFDL0QsdUJBQXVCLGNBQWMsQ0FBQywyQkFBMkIsRUFBRTtRQUNuRSx1QkFBdUIsY0FBYyxDQUFDLDJCQUEyQixFQUFFO1FBQ25FLHVCQUF1QixjQUFjLENBQUMsNkJBQTZCLEVBQUU7S0FDdEUsQ0FBQztJQUVGLFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixPQUFlLEVBQ2YsS0FBYSxFQUNiLFdBQW1CLEVBQ25CLE1BQXdDO0lBRXhDLE1BQU0sVUFBVSxHQUFHLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDNUUsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLE9BQU8sSUFBSSxLQUFLLEtBQUssV0FBVyxHQUFHLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRTNFLCtDQUErQztJQUMvQyxJQUFJLE1BQU0sS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLDBCQUEwQjtJQUM3RCxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxXQUFtQjtJQUM5QyxRQUFRLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssS0FBSztZQUNSLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLEtBQUssTUFBTTtZQUNULE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssTUFBTTtZQUNULE9BQU8sZUFBZSxDQUFDO1FBQ3pCO1lBQ0UsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsVUFBa0I7SUFDNUMsUUFBUSxVQUFVLEVBQUUsQ0FBQztRQUNuQixLQUFLLEtBQUs7WUFDUixPQUFPLFFBQVEsQ0FBQztRQUNsQixLQUFLLE1BQU07WUFDVCxPQUFPLFFBQVEsQ0FBQztRQUNsQixLQUFLLGlCQUFpQjtZQUNwQixPQUFPLG9CQUFvQixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBdUI7SUFDbEQsTUFBTSxLQUFLLEdBQUc7UUFDWixtQkFBbUIsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzdELHNCQUFzQixPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ3RDLG1CQUFtQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDM0Qsc0JBQXNCLE9BQU8sQ0FBQyxXQUFXLEVBQUU7UUFDM0MseUJBQXlCLE9BQU8sQ0FBQyxVQUFVLEVBQUU7S0FDOUMsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsc0JBQXNCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDdEQsQ0FBQztTQUFNLENBQUM7UUFDTixLQUFLLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDekMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxPQUFPLENBQUMsT0FBTyxXQUFXLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxZQUFZLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFeEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ2xELENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQWU7SUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFlO0lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBZTtJQUMxQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFlO0lBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsWUFBb0I7SUFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsWUFBWSxJQUFJLENBQUMsQ0FBQztBQUNsRCxDQUFDIn0=
|
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.19.1",
|
|
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",
|
|
@@ -39,18 +39,18 @@
|
|
|
39
39
|
},
|
|
40
40
|
"homepage": "https://gitlab.com/gitzone/private/gitzone#readme",
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@git.zone/tsbuild": "^2.
|
|
43
|
-
"@git.zone/tsrun": "^1.
|
|
44
|
-
"@git.zone/tstest": "^2.
|
|
42
|
+
"@git.zone/tsbuild": "^2.7.1",
|
|
43
|
+
"@git.zone/tsrun": "^1.6.2",
|
|
44
|
+
"@git.zone/tstest": "^2.7.0",
|
|
45
45
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
46
46
|
"@push.rocks/smartfile": "^11.2.7",
|
|
47
47
|
"@push.rocks/smartinteract": "^2.0.16",
|
|
48
|
-
"@push.rocks/smartnetwork": "^4.
|
|
48
|
+
"@push.rocks/smartnetwork": "^4.4.0",
|
|
49
49
|
"@push.rocks/smartshell": "^3.3.0",
|
|
50
50
|
"@types/node": "^22.15.18"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@git.zone/tsdoc": "^1.
|
|
53
|
+
"@git.zone/tsdoc": "^1.6.0",
|
|
54
54
|
"@git.zone/tspublish": "^1.10.3",
|
|
55
55
|
"@push.rocks/commitinfo": "^1.0.12",
|
|
56
56
|
"@push.rocks/early": "^4.0.4",
|
|
@@ -59,12 +59,12 @@
|
|
|
59
59
|
"@push.rocks/npmextra": "^5.3.3",
|
|
60
60
|
"@push.rocks/projectinfo": "^5.0.2",
|
|
61
61
|
"@push.rocks/smartchok": "^1.1.1",
|
|
62
|
-
"@push.rocks/smartcli": "^4.0.
|
|
62
|
+
"@push.rocks/smartcli": "^4.0.19",
|
|
63
63
|
"@push.rocks/smartdiff": "^1.0.3",
|
|
64
64
|
"@push.rocks/smartgulp": "^3.0.4",
|
|
65
|
-
"@push.rocks/smartjson": "^5.0
|
|
65
|
+
"@push.rocks/smartjson": "^5.2.0",
|
|
66
66
|
"@push.rocks/smartlegal": "^1.0.27",
|
|
67
|
-
"@push.rocks/smartlog": "^3.1.
|
|
67
|
+
"@push.rocks/smartlog": "^3.1.10",
|
|
68
68
|
"@push.rocks/smartlog-destination-local": "^9.0.2",
|
|
69
69
|
"@push.rocks/smartmustache": "^3.0.2",
|
|
70
70
|
"@push.rocks/smartnpm": "^2.0.6",
|
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.19.1',
|
|
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
|
@@ -4,6 +4,7 @@ import * as plugins from './mod.plugins.js';
|
|
|
4
4
|
import * as paths from '../paths.js';
|
|
5
5
|
import { logger } from '../gitzone.logging.js';
|
|
6
6
|
import * as helpers from './mod.helpers.js';
|
|
7
|
+
import * as ui from './mod.ui.js';
|
|
7
8
|
|
|
8
9
|
export const run = async (argvArg: any) => {
|
|
9
10
|
if (argvArg.format) {
|
|
@@ -11,7 +12,8 @@ export const run = async (argvArg: any) => {
|
|
|
11
12
|
await formatMod.run();
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
ui.printHeader('đ Analyzing repository changes...');
|
|
16
|
+
|
|
15
17
|
const aidoc = new plugins.tsdoc.AiDoc();
|
|
16
18
|
await aidoc.start();
|
|
17
19
|
|
|
@@ -19,16 +21,12 @@ export const run = async (argvArg: any) => {
|
|
|
19
21
|
|
|
20
22
|
await aidoc.stop();
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-> ${nextCommitObject.recommendedNextVersionLevel}(${nextCommitObject.recommendedNextVersionScope}): ${nextCommitObject.recommendedNextVersionMessage}
|
|
29
|
-
===========
|
|
30
|
-
`,
|
|
31
|
-
);
|
|
24
|
+
ui.printRecommendation({
|
|
25
|
+
recommendedNextVersion: nextCommitObject.recommendedNextVersion,
|
|
26
|
+
recommendedNextVersionLevel: nextCommitObject.recommendedNextVersionLevel,
|
|
27
|
+
recommendedNextVersionScope: nextCommitObject.recommendedNextVersionScope,
|
|
28
|
+
recommendedNextVersionMessage: nextCommitObject.recommendedNextVersionMessage,
|
|
29
|
+
});
|
|
32
30
|
const commitInteract = new plugins.smartinteract.SmartInteract();
|
|
33
31
|
commitInteract.addQuestions([
|
|
34
32
|
{
|
|
@@ -70,20 +68,30 @@ export const run = async (argvArg: any) => {
|
|
|
70
68
|
}
|
|
71
69
|
})();
|
|
72
70
|
|
|
73
|
-
|
|
71
|
+
ui.printHeader('⨠Creating Semantic Commit');
|
|
72
|
+
ui.printCommitMessage(commitString);
|
|
74
73
|
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
75
74
|
executor: 'bash',
|
|
76
75
|
sourceFilePaths: [],
|
|
77
76
|
});
|
|
78
77
|
|
|
79
|
-
|
|
78
|
+
// Determine total steps (6 if pushing, 5 if not)
|
|
79
|
+
const totalSteps = answerBucket.getAnswerFor('pushToOrigin') && !(process.env.CI === 'true') ? 6 : 5;
|
|
80
|
+
let currentStep = 0;
|
|
81
|
+
|
|
82
|
+
// Step 1: Baking commitinfo
|
|
83
|
+
currentStep++;
|
|
84
|
+
ui.printStep(currentStep, totalSteps, 'đ§ Baking commit info into code', 'in-progress');
|
|
80
85
|
const commitInfo = new plugins.commitinfo.CommitInfo(
|
|
81
86
|
paths.cwd,
|
|
82
87
|
commitVersionType,
|
|
83
88
|
);
|
|
84
89
|
await commitInfo.writeIntoPotentialDirs();
|
|
90
|
+
ui.printStep(currentStep, totalSteps, 'đ§ Baking commit info into code', 'done');
|
|
85
91
|
|
|
86
|
-
|
|
92
|
+
// Step 2: Writing changelog
|
|
93
|
+
currentStep++;
|
|
94
|
+
ui.printStep(currentStep, totalSteps, 'đ Generating changelog.md', 'in-progress');
|
|
87
95
|
let changelog = nextCommitObject.changelog;
|
|
88
96
|
changelog = changelog.replaceAll(
|
|
89
97
|
'{{nextVersion}}',
|
|
@@ -110,23 +118,54 @@ export const run = async (argvArg: any) => {
|
|
|
110
118
|
changelog,
|
|
111
119
|
plugins.path.join(paths.cwd, `changelog.md`),
|
|
112
120
|
);
|
|
121
|
+
ui.printStep(currentStep, totalSteps, 'đ Generating changelog.md', 'done');
|
|
113
122
|
|
|
114
|
-
|
|
123
|
+
// Step 3: Staging files
|
|
124
|
+
currentStep++;
|
|
125
|
+
ui.printStep(currentStep, totalSteps, 'đĻ Staging files', 'in-progress');
|
|
115
126
|
await smartshellInstance.exec(`git add -A`);
|
|
127
|
+
ui.printStep(currentStep, totalSteps, 'đĻ Staging files', 'done');
|
|
128
|
+
|
|
129
|
+
// Step 4: Creating commit
|
|
130
|
+
currentStep++;
|
|
131
|
+
ui.printStep(currentStep, totalSteps, 'đž Creating git commit', 'in-progress');
|
|
116
132
|
await smartshellInstance.exec(`git commit -m "${commitString}"`);
|
|
133
|
+
ui.printStep(currentStep, totalSteps, 'đž Creating git commit', 'done');
|
|
117
134
|
|
|
118
|
-
//
|
|
135
|
+
// Step 5: Bumping version
|
|
136
|
+
currentStep++;
|
|
119
137
|
const projectType = await helpers.detectProjectType();
|
|
120
|
-
await helpers.bumpProjectVersion(projectType, commitVersionType);
|
|
138
|
+
const newVersion = await helpers.bumpProjectVersion(projectType, commitVersionType, currentStep, totalSteps);
|
|
121
139
|
|
|
140
|
+
// Step 6: Push to remote (optional)
|
|
141
|
+
const currentBranch = await helpers.detectCurrentBranch();
|
|
122
142
|
if (
|
|
123
143
|
answerBucket.getAnswerFor('pushToOrigin') &&
|
|
124
144
|
!(process.env.CI === 'true')
|
|
125
145
|
) {
|
|
126
|
-
|
|
127
|
-
|
|
146
|
+
currentStep++;
|
|
147
|
+
ui.printStep(currentStep, totalSteps, `đ Pushing to origin/${currentBranch}`, 'in-progress');
|
|
128
148
|
await smartshellInstance.exec(`git push origin ${currentBranch} --follow-tags`);
|
|
149
|
+
ui.printStep(currentStep, totalSteps, `đ Pushing to origin/${currentBranch}`, 'done');
|
|
129
150
|
}
|
|
151
|
+
|
|
152
|
+
console.log(''); // Add spacing before summary
|
|
153
|
+
|
|
154
|
+
// Get commit SHA for summary
|
|
155
|
+
const commitShaResult = await smartshellInstance.exec('git rev-parse --short HEAD');
|
|
156
|
+
const commitSha = commitShaResult.stdout.trim();
|
|
157
|
+
|
|
158
|
+
// Print final summary
|
|
159
|
+
ui.printSummary({
|
|
160
|
+
projectType,
|
|
161
|
+
branch: currentBranch,
|
|
162
|
+
commitType: answerBucket.getAnswerFor('commitType'),
|
|
163
|
+
commitScope: answerBucket.getAnswerFor('commitScope'),
|
|
164
|
+
commitMessage: answerBucket.getAnswerFor('commitDescription'),
|
|
165
|
+
newVersion: newVersion,
|
|
166
|
+
commitSha: commitSha,
|
|
167
|
+
pushed: answerBucket.getAnswerFor('pushToOrigin') && !(process.env.CI === 'true'),
|
|
168
|
+
});
|
|
130
169
|
};
|
|
131
170
|
|
|
132
171
|
const createCommitStringFromAnswerBucket = (
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as plugins from './mod.plugins.js';
|
|
2
2
|
import * as paths from '../paths.js';
|
|
3
3
|
import { logger } from '../gitzone.logging.js';
|
|
4
|
+
import * as ui from './mod.ui.js';
|
|
4
5
|
|
|
5
6
|
export type ProjectType = 'npm' | 'deno' | 'both' | 'none';
|
|
6
7
|
export type VersionType = 'patch' | 'minor' | 'major';
|
|
@@ -204,25 +205,40 @@ async function syncVersionToDenoJson(version: string): Promise<void> {
|
|
|
204
205
|
* Bumps the project version based on project type
|
|
205
206
|
* @param projectType The detected project type
|
|
206
207
|
* @param versionType The type of version bump
|
|
208
|
+
* @param currentStep The current step number for progress display
|
|
209
|
+
* @param totalSteps The total number of steps for progress display
|
|
207
210
|
* @returns The new version string
|
|
208
211
|
*/
|
|
209
212
|
export async function bumpProjectVersion(
|
|
210
213
|
projectType: ProjectType,
|
|
211
|
-
versionType: VersionType
|
|
214
|
+
versionType: VersionType,
|
|
215
|
+
currentStep?: number,
|
|
216
|
+
totalSteps?: number
|
|
212
217
|
): Promise<string> {
|
|
218
|
+
const projectEmoji = projectType === 'npm' ? 'đĻ' : projectType === 'deno' ? 'đĻ' : 'đ';
|
|
219
|
+
const description = `đˇī¸ Bumping version (${projectEmoji} ${projectType})`;
|
|
220
|
+
|
|
221
|
+
if (currentStep && totalSteps) {
|
|
222
|
+
ui.printStep(currentStep, totalSteps, description, 'in-progress');
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
let newVersion: string;
|
|
226
|
+
|
|
213
227
|
switch (projectType) {
|
|
214
228
|
case 'npm':
|
|
215
|
-
|
|
229
|
+
newVersion = await bumpNpmVersion(versionType);
|
|
230
|
+
break;
|
|
216
231
|
|
|
217
232
|
case 'deno':
|
|
218
|
-
|
|
233
|
+
newVersion = await bumpDenoVersion(versionType);
|
|
234
|
+
break;
|
|
219
235
|
|
|
220
236
|
case 'both': {
|
|
221
237
|
// Bump npm version first (it handles git tags)
|
|
222
|
-
|
|
238
|
+
newVersion = await bumpNpmVersion(versionType);
|
|
223
239
|
// Then sync to deno.json
|
|
224
240
|
await syncVersionToDenoJson(newVersion);
|
|
225
|
-
|
|
241
|
+
break;
|
|
226
242
|
}
|
|
227
243
|
|
|
228
244
|
case 'none':
|
|
@@ -231,4 +247,10 @@ export async function bumpProjectVersion(
|
|
|
231
247
|
default:
|
|
232
248
|
throw new Error(`Unknown project type: ${projectType}`);
|
|
233
249
|
}
|
|
250
|
+
|
|
251
|
+
if (currentStep && totalSteps) {
|
|
252
|
+
ui.printStep(currentStep, totalSteps, description, 'done');
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return newVersion;
|
|
234
256
|
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { logger } from '../gitzone.logging.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* UI helper module for beautiful CLI output
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
interface ICommitSummary {
|
|
8
|
+
projectType: string;
|
|
9
|
+
branch: string;
|
|
10
|
+
commitType: string;
|
|
11
|
+
commitScope: string;
|
|
12
|
+
commitMessage: string;
|
|
13
|
+
newVersion: string;
|
|
14
|
+
commitSha?: string;
|
|
15
|
+
pushed: boolean;
|
|
16
|
+
repoUrl?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface IRecommendation {
|
|
20
|
+
recommendedNextVersion: string;
|
|
21
|
+
recommendedNextVersionLevel: string;
|
|
22
|
+
recommendedNextVersionScope: string;
|
|
23
|
+
recommendedNextVersionMessage: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Print a header with a box around it
|
|
28
|
+
*/
|
|
29
|
+
export function printHeader(title: string): void {
|
|
30
|
+
const width = 57;
|
|
31
|
+
const padding = Math.max(0, width - title.length - 2);
|
|
32
|
+
const leftPad = Math.floor(padding / 2);
|
|
33
|
+
const rightPad = padding - leftPad;
|
|
34
|
+
|
|
35
|
+
console.log('');
|
|
36
|
+
console.log('ââ' + 'â'.repeat(width) + 'ââŽ');
|
|
37
|
+
console.log('â ' + title + ' '.repeat(rightPad + leftPad) + ' â');
|
|
38
|
+
console.log('â°â' + 'â'.repeat(width) + 'ââ¯');
|
|
39
|
+
console.log('');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Print a section with a border
|
|
44
|
+
*/
|
|
45
|
+
export function printSection(title: string, lines: string[]): void {
|
|
46
|
+
const width = 59;
|
|
47
|
+
|
|
48
|
+
console.log('ââ ' + title + ' ' + 'â'.repeat(Math.max(0, width - title.length - 3)) + 'â');
|
|
49
|
+
console.log('â' + ' '.repeat(width) + 'â');
|
|
50
|
+
|
|
51
|
+
for (const line of lines) {
|
|
52
|
+
const padding = width - line.length;
|
|
53
|
+
console.log('â ' + line + ' '.repeat(Math.max(0, padding - 2)) + 'â');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
console.log('â' + ' '.repeat(width) + 'â');
|
|
57
|
+
console.log('ââ' + 'â'.repeat(width) + 'ââ');
|
|
58
|
+
console.log('');
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Print AI recommendations in a nice box
|
|
63
|
+
*/
|
|
64
|
+
export function printRecommendation(recommendation: IRecommendation): void {
|
|
65
|
+
const lines = [
|
|
66
|
+
`Suggested Version: v${recommendation.recommendedNextVersion}`,
|
|
67
|
+
`Suggested Type: ${recommendation.recommendedNextVersionLevel}`,
|
|
68
|
+
`Suggested Scope: ${recommendation.recommendedNextVersionScope}`,
|
|
69
|
+
`Suggested Message: ${recommendation.recommendedNextVersionMessage}`,
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
printSection('đ AI Recommendations', lines);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Print a progress step
|
|
77
|
+
*/
|
|
78
|
+
export function printStep(
|
|
79
|
+
current: number,
|
|
80
|
+
total: number,
|
|
81
|
+
description: string,
|
|
82
|
+
status: 'in-progress' | 'done' | 'error'
|
|
83
|
+
): void {
|
|
84
|
+
const statusIcon = status === 'done' ? 'â' : status === 'error' ? 'â' : 'âŗ';
|
|
85
|
+
const dots = '.'.repeat(Math.max(0, 40 - description.length));
|
|
86
|
+
|
|
87
|
+
console.log(` [${current}/${total}] ${description}${dots} ${statusIcon}`);
|
|
88
|
+
|
|
89
|
+
// Clear the line on next update if in progress
|
|
90
|
+
if (status === 'in-progress') {
|
|
91
|
+
process.stdout.write('\x1b[1A'); // Move cursor up one line
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Get emoji for project type
|
|
97
|
+
*/
|
|
98
|
+
function getProjectTypeEmoji(projectType: string): string {
|
|
99
|
+
switch (projectType) {
|
|
100
|
+
case 'npm':
|
|
101
|
+
return 'đĻ npm';
|
|
102
|
+
case 'deno':
|
|
103
|
+
return 'đĻ Deno';
|
|
104
|
+
case 'both':
|
|
105
|
+
return 'đ npm + Deno';
|
|
106
|
+
default:
|
|
107
|
+
return 'â Unknown';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Get emoji for commit type
|
|
113
|
+
*/
|
|
114
|
+
function getCommitTypeEmoji(commitType: string): string {
|
|
115
|
+
switch (commitType) {
|
|
116
|
+
case 'fix':
|
|
117
|
+
return 'đ§ fix';
|
|
118
|
+
case 'feat':
|
|
119
|
+
return '⨠feat';
|
|
120
|
+
case 'BREAKING CHANGE':
|
|
121
|
+
return 'đĨ BREAKING CHANGE';
|
|
122
|
+
default:
|
|
123
|
+
return commitType;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Print final commit summary
|
|
129
|
+
*/
|
|
130
|
+
export function printSummary(summary: ICommitSummary): void {
|
|
131
|
+
const lines = [
|
|
132
|
+
`Project Type: ${getProjectTypeEmoji(summary.projectType)}`,
|
|
133
|
+
`Branch: đŋ ${summary.branch}`,
|
|
134
|
+
`Commit Type: ${getCommitTypeEmoji(summary.commitType)}`,
|
|
135
|
+
`Scope: đ ${summary.commitScope}`,
|
|
136
|
+
`New Version: đˇī¸ v${summary.newVersion}`,
|
|
137
|
+
];
|
|
138
|
+
|
|
139
|
+
if (summary.commitSha) {
|
|
140
|
+
lines.push(`Commit SHA: đ ${summary.commitSha}`);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (summary.pushed) {
|
|
144
|
+
lines.push(`Remote: â Pushed successfully`);
|
|
145
|
+
} else {
|
|
146
|
+
lines.push(`Remote: â Not pushed (local only)`);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (summary.repoUrl && summary.commitSha) {
|
|
150
|
+
lines.push('');
|
|
151
|
+
lines.push(`View at: ${summary.repoUrl}/commit/${summary.commitSha}`);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
printSection('â
Commit Summary', lines);
|
|
155
|
+
|
|
156
|
+
if (summary.pushed) {
|
|
157
|
+
console.log('đ All done! Your changes are committed and pushed.\n');
|
|
158
|
+
} else {
|
|
159
|
+
console.log('â Commit created successfully.\n');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Print an info message with consistent formatting
|
|
165
|
+
*/
|
|
166
|
+
export function printInfo(message: string): void {
|
|
167
|
+
console.log(` âšī¸ ${message}`);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Print a success message
|
|
172
|
+
*/
|
|
173
|
+
export function printSuccess(message: string): void {
|
|
174
|
+
console.log(` â ${message}`);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Print a warning message
|
|
179
|
+
*/
|
|
180
|
+
export function printWarning(message: string): void {
|
|
181
|
+
logger.log('warn', `â ī¸ ${message}`);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Print an error message
|
|
186
|
+
*/
|
|
187
|
+
export function printError(message: string): void {
|
|
188
|
+
logger.log('error', `â ${message}`);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Print commit message being created
|
|
193
|
+
*/
|
|
194
|
+
export function printCommitMessage(commitString: string): void {
|
|
195
|
+
console.log(`\n đ Commit: ${commitString}\n`);
|
|
196
|
+
}
|