@m3hti/commit-genie 1.2.5 → 1.2.6

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.
Files changed (101) hide show
  1. package/dist/commands/config.d.ts +3 -0
  2. package/dist/commands/config.d.ts.map +1 -0
  3. package/dist/commands/config.js +31 -0
  4. package/dist/commands/config.js.map +1 -0
  5. package/dist/commands/generate.d.ts +12 -0
  6. package/dist/commands/generate.d.ts.map +1 -0
  7. package/dist/commands/generate.js +550 -0
  8. package/dist/commands/generate.js.map +1 -0
  9. package/dist/commands/generate.test.d.ts +2 -0
  10. package/dist/commands/generate.test.d.ts.map +1 -0
  11. package/dist/commands/generate.test.js +168 -0
  12. package/dist/commands/generate.test.js.map +1 -0
  13. package/dist/commands/hook.d.ts +4 -0
  14. package/dist/commands/hook.d.ts.map +1 -0
  15. package/dist/commands/hook.js +62 -0
  16. package/dist/commands/hook.js.map +1 -0
  17. package/dist/commands/stats.d.ts +6 -0
  18. package/dist/commands/stats.d.ts.map +1 -0
  19. package/dist/commands/stats.js +39 -0
  20. package/dist/commands/stats.js.map +1 -0
  21. package/dist/data/wordlist.d.ts +11 -0
  22. package/dist/data/wordlist.d.ts.map +1 -0
  23. package/dist/data/wordlist.js +170 -0
  24. package/dist/data/wordlist.js.map +1 -0
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +82 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/services/aiService.d.ts +42 -0
  30. package/dist/services/aiService.d.ts.map +1 -0
  31. package/dist/services/aiService.js +224 -0
  32. package/dist/services/aiService.js.map +1 -0
  33. package/dist/services/analyzerService.d.ts +129 -0
  34. package/dist/services/analyzerService.d.ts.map +1 -0
  35. package/dist/services/analyzerService.js +1662 -0
  36. package/dist/services/analyzerService.js.map +1 -0
  37. package/dist/services/analyzerService.test.d.ts +2 -0
  38. package/dist/services/analyzerService.test.d.ts.map +1 -0
  39. package/dist/services/analyzerService.test.js +516 -0
  40. package/dist/services/analyzerService.test.js.map +1 -0
  41. package/dist/services/configService.d.ts +25 -0
  42. package/dist/services/configService.d.ts.map +1 -0
  43. package/dist/services/configService.js +228 -0
  44. package/dist/services/configService.js.map +1 -0
  45. package/dist/services/configService.test.d.ts +2 -0
  46. package/dist/services/configService.test.d.ts.map +1 -0
  47. package/dist/services/configService.test.js +165 -0
  48. package/dist/services/configService.test.js.map +1 -0
  49. package/dist/services/gitService.d.ts +64 -0
  50. package/dist/services/gitService.d.ts.map +1 -0
  51. package/dist/services/gitService.js +303 -0
  52. package/dist/services/gitService.js.map +1 -0
  53. package/dist/services/gitService.test.d.ts +2 -0
  54. package/dist/services/gitService.test.d.ts.map +1 -0
  55. package/dist/services/gitService.test.js +140 -0
  56. package/dist/services/gitService.test.js.map +1 -0
  57. package/dist/services/historyService.d.ts +39 -0
  58. package/dist/services/historyService.d.ts.map +1 -0
  59. package/dist/services/historyService.js +195 -0
  60. package/dist/services/historyService.js.map +1 -0
  61. package/dist/services/historyService.test.d.ts +2 -0
  62. package/dist/services/historyService.test.d.ts.map +1 -0
  63. package/dist/services/historyService.test.js +157 -0
  64. package/dist/services/historyService.test.js.map +1 -0
  65. package/dist/services/hookService.d.ts +29 -0
  66. package/dist/services/hookService.d.ts.map +1 -0
  67. package/dist/services/hookService.js +164 -0
  68. package/dist/services/hookService.js.map +1 -0
  69. package/dist/services/lintService.d.ts +32 -0
  70. package/dist/services/lintService.d.ts.map +1 -0
  71. package/dist/services/lintService.js +191 -0
  72. package/dist/services/lintService.js.map +1 -0
  73. package/dist/services/spellService.d.ts +42 -0
  74. package/dist/services/spellService.d.ts.map +1 -0
  75. package/dist/services/spellService.js +175 -0
  76. package/dist/services/spellService.js.map +1 -0
  77. package/dist/services/splitService.d.ts +32 -0
  78. package/dist/services/splitService.d.ts.map +1 -0
  79. package/dist/services/splitService.js +184 -0
  80. package/dist/services/splitService.js.map +1 -0
  81. package/dist/services/statsService.d.ts +28 -0
  82. package/dist/services/statsService.d.ts.map +1 -0
  83. package/dist/services/statsService.js +204 -0
  84. package/dist/services/statsService.js.map +1 -0
  85. package/dist/types/index.d.ts +222 -0
  86. package/dist/types/index.d.ts.map +1 -0
  87. package/dist/types/index.js +3 -0
  88. package/dist/types/index.js.map +1 -0
  89. package/dist/utils/filePatterns.d.ts +5 -0
  90. package/dist/utils/filePatterns.d.ts.map +1 -0
  91. package/dist/utils/filePatterns.js +77 -0
  92. package/dist/utils/filePatterns.js.map +1 -0
  93. package/dist/utils/filePatterns.test.d.ts +2 -0
  94. package/dist/utils/filePatterns.test.d.ts.map +1 -0
  95. package/dist/utils/filePatterns.test.js +51 -0
  96. package/dist/utils/filePatterns.test.js.map +1 -0
  97. package/dist/utils/prompt.d.ts +4 -0
  98. package/dist/utils/prompt.d.ts.map +1 -0
  99. package/dist/utils/prompt.js +60 -0
  100. package/dist/utils/prompt.js.map +1 -0
  101. package/package.json +1 -1
@@ -0,0 +1,3 @@
1
+ export declare function configInitCommand(): void;
2
+ export declare function configShowCommand(): void;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,SAoBhC;AAED,wBAAgB,iBAAiB,SAIhC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configInitCommand = configInitCommand;
4
+ exports.configShowCommand = configShowCommand;
5
+ const configService_1 = require("../services/configService");
6
+ function configInitCommand() {
7
+ console.log('Creating CommitGenie config file...\n');
8
+ const result = configService_1.ConfigService.initConfig();
9
+ if (result.success) {
10
+ console.log(`āœ“ ${result.message}`);
11
+ if (result.path) {
12
+ console.log(` Location: ${result.path}`);
13
+ }
14
+ console.log('\nYou can customize:');
15
+ console.log(' - scopes: Map file patterns to scope names');
16
+ console.log(' - defaultType: Default commit type (feat, fix, etc.)');
17
+ console.log(' - maxMessageLength: Maximum commit message length');
18
+ }
19
+ else {
20
+ console.log(`āœ— ${result.message}`);
21
+ if (result.path) {
22
+ console.log(` Existing file: ${result.path}`);
23
+ }
24
+ }
25
+ }
26
+ function configShowCommand() {
27
+ const config = configService_1.ConfigService.getConfig();
28
+ console.log('Current CommitGenie configuration:\n');
29
+ console.log(JSON.stringify(config, null, 2));
30
+ }
31
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":";;AAEA,8CAoBC;AAED,8CAIC;AA5BD,6DAA0D;AAE1D,SAAgB,iBAAiB;IAC/B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,6BAAa,CAAC,UAAU,EAAE,CAAC;IAE1C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB;IAC/B,MAAM,MAAM,GAAG,6BAAa,CAAC,SAAS,EAAE,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface GenerateOptions {
2
+ commit?: boolean;
3
+ dryRun?: boolean;
4
+ amend?: boolean;
5
+ ai?: boolean;
6
+ interactive?: boolean;
7
+ lint?: boolean;
8
+ messageOnly?: boolean;
9
+ single?: boolean;
10
+ }
11
+ export declare function generateCommand(options?: GenerateOptions): Promise<void>;
12
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,iBAsJlE"}
@@ -0,0 +1,550 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateCommand = generateCommand;
4
+ const gitService_1 = require("../services/gitService");
5
+ const analyzerService_1 = require("../services/analyzerService");
6
+ const lintService_1 = require("../services/lintService");
7
+ const spellService_1 = require("../services/spellService");
8
+ const splitService_1 = require("../services/splitService");
9
+ const prompt_1 = require("../utils/prompt");
10
+ async function generateCommand(options = {}) {
11
+ try {
12
+ // Check if in a git repository
13
+ if (!gitService_1.GitService.isGitRepository()) {
14
+ console.error('Error: Not a git repository');
15
+ console.log('Please run this command inside a git repository.');
16
+ process.exit(1);
17
+ }
18
+ // Handle amend mode
19
+ if (options.amend) {
20
+ return await handleAmendMode(options);
21
+ }
22
+ // Get git status
23
+ const status = gitService_1.GitService.getStatus();
24
+ // Check if there are staged changes
25
+ if (!status.hasStagedChanges) {
26
+ console.error('Error: No staged changes found');
27
+ console.log('\nPlease stage your changes first using:');
28
+ console.log(' git add <files>');
29
+ console.log('\nOr stage all changes:');
30
+ console.log(' git add .');
31
+ process.exit(1);
32
+ }
33
+ // Check for split opportunity (warning only)
34
+ const diff = gitService_1.GitService.getDiff();
35
+ const splitSuggestion = splitService_1.SplitService.analyzeSplitOpportunity(status.staged, diff);
36
+ if (splitSuggestion?.shouldSplit && !options.messageOnly) {
37
+ displaySplitWarning(splitSuggestion);
38
+ }
39
+ // Generate suggestions (with optional AI enhancement)
40
+ let suggestions;
41
+ if (options.ai) {
42
+ console.log('\nUsing AI to enhance commit message...');
43
+ suggestions = await analyzerService_1.AnalyzerService.generateSuggestionsWithAI(true);
44
+ }
45
+ else {
46
+ suggestions = analyzerService_1.AnalyzerService.generateMultipleSuggestions();
47
+ }
48
+ const defaultMessage = suggestions[0].message;
49
+ // Check spelling in the description
50
+ const spellResult = spellService_1.SpellService.check(defaultMessage.description);
51
+ if (!spellResult.valid && !options.messageOnly) {
52
+ displaySpellWarning(spellResult);
53
+ }
54
+ // Message-only mode for scripts and hooks (silent, just output the message)
55
+ if (options.messageOnly) {
56
+ console.log(defaultMessage.full);
57
+ return;
58
+ }
59
+ // Dry run mode - show detailed preview without committing
60
+ if (options.dryRun) {
61
+ displayDryRun(status, suggestions, defaultMessage);
62
+ return;
63
+ }
64
+ // Show what files are being analyzed
65
+ console.log('\nAnalyzing staged changes...\n');
66
+ console.log('Staged files:');
67
+ for (const file of status.staged) {
68
+ const statusSymbol = getStatusSymbol(file.status);
69
+ console.log(` ${statusSymbol} ${file.path}`);
70
+ }
71
+ // Get diff statistics
72
+ const stats = gitService_1.GitService.getDiffStats();
73
+ console.log(`\n${stats.filesChanged} file(s) changed, ${stats.insertions} insertion(s)(+), ${stats.deletions} deletion(s)(-)\n`);
74
+ // Show suggestions
75
+ if (suggestions.length > 1 && !options.single) {
76
+ // Multiple suggestions mode
77
+ console.log('Suggested commit messages:');
78
+ console.log('─'.repeat(50));
79
+ for (const suggestion of suggestions) {
80
+ console.log(`\n [${suggestion.id}] ${suggestion.label}`);
81
+ displayMessage(suggestion.message, ' ');
82
+ }
83
+ console.log('\n' + '─'.repeat(50));
84
+ // Handle commit based on options
85
+ if (options.commit) {
86
+ // Auto-commit with first suggestion
87
+ await commitWithMessage(defaultMessage.full, options);
88
+ }
89
+ else if (options.interactive !== false) {
90
+ // Interactive mode with selection
91
+ console.log('\nOptions:');
92
+ console.log(` [1-${suggestions.length}] Select a message`);
93
+ console.log(' [e] Edit and write your own');
94
+ console.log(' [n] Cancel\n');
95
+ const choice = await (0, prompt_1.prompt)('Your choice: ');
96
+ await handleMultipleChoice(choice, suggestions, options);
97
+ }
98
+ else {
99
+ // Non-interactive mode
100
+ console.log('\nTo commit with the recommended message, run:');
101
+ console.log(` git commit -m "${escapeForShell(defaultMessage.full)}"`);
102
+ }
103
+ }
104
+ else {
105
+ // Single suggestion mode
106
+ console.log('Suggested commit message:');
107
+ console.log('─'.repeat(50));
108
+ displayMessage(defaultMessage, '');
109
+ console.log('─'.repeat(50));
110
+ console.log('\nBreakdown:');
111
+ console.log(` Type: ${defaultMessage.type}`);
112
+ if (defaultMessage.scope) {
113
+ console.log(` Scope: ${defaultMessage.scope}`);
114
+ }
115
+ console.log(` Description: ${defaultMessage.description}`);
116
+ if (defaultMessage.body) {
117
+ console.log(' Body: (see above)');
118
+ }
119
+ // Handle commit based on options
120
+ if (options.commit) {
121
+ await commitWithMessage(defaultMessage.full, options);
122
+ }
123
+ else if (options.interactive !== false) {
124
+ // Interactive mode (default)
125
+ console.log('\nWhat would you like to do?');
126
+ console.log(' [c] Commit with this message');
127
+ console.log(' [e] Edit the message');
128
+ console.log(' [n] Cancel\n');
129
+ const choice = await (0, prompt_1.prompt)('Your choice (c/e/n): ');
130
+ await handleSingleChoice(choice, defaultMessage.full, options);
131
+ }
132
+ else {
133
+ // Non-interactive mode (just show the message)
134
+ console.log('\nTo commit with this message, run:');
135
+ console.log(` git commit -m "${escapeForShell(defaultMessage.full)}"`);
136
+ }
137
+ }
138
+ }
139
+ catch (error) {
140
+ if (error instanceof Error) {
141
+ console.error(`Error: ${error.message}`);
142
+ }
143
+ else {
144
+ console.error('An unexpected error occurred');
145
+ }
146
+ process.exit(1);
147
+ }
148
+ }
149
+ function getStatusSymbol(status) {
150
+ switch (status) {
151
+ case 'A':
152
+ return '+';
153
+ case 'M':
154
+ return '~';
155
+ case 'D':
156
+ return '-';
157
+ case 'R':
158
+ return '→';
159
+ default:
160
+ return '?';
161
+ }
162
+ }
163
+ function displayMessage(message, indent) {
164
+ const lines = message.full.split('\n');
165
+ const subject = lines[0];
166
+ console.log(`${indent}${subject}`);
167
+ // If there's a body, display it with proper indentation
168
+ if (message.body) {
169
+ console.log('');
170
+ const bodyLines = message.body.split('\n');
171
+ for (const line of bodyLines) {
172
+ console.log(`${indent}${line}`);
173
+ }
174
+ }
175
+ }
176
+ function escapeForShell(message) {
177
+ // For multi-line messages, suggest using -F flag
178
+ if (message.includes('\n')) {
179
+ return message.split('\n')[0] + '" (use -F for full body)';
180
+ }
181
+ return message.replace(/"/g, '\\"');
182
+ }
183
+ async function commitWithMessage(message, options = {}) {
184
+ try {
185
+ // Run lint check unless disabled
186
+ if (options.lint !== false) {
187
+ const parsedMessage = parseMessageForLint(message);
188
+ const lintResult = lintService_1.LintService.lint(parsedMessage);
189
+ if (!lintResult.valid) {
190
+ displayLintViolations(lintResult);
191
+ if (lintService_1.LintService.shouldBlockCommit(lintResult)) {
192
+ console.error('\nCommit blocked due to lint errors.');
193
+ console.log('Use --no-lint to skip linting.\n');
194
+ process.exit(1);
195
+ }
196
+ }
197
+ }
198
+ gitService_1.GitService.commit(message);
199
+ console.log('\nāœ“ Changes committed successfully!');
200
+ }
201
+ catch (err) {
202
+ console.error(`\nFailed to commit: ${err instanceof Error ? err.message : err}`);
203
+ process.exit(1);
204
+ }
205
+ }
206
+ async function amendWithMessage(message, options = {}) {
207
+ try {
208
+ // Run lint check unless disabled
209
+ if (options.lint !== false) {
210
+ const parsedMessage = parseMessageForLint(message);
211
+ const lintResult = lintService_1.LintService.lint(parsedMessage);
212
+ if (!lintResult.valid) {
213
+ displayLintViolations(lintResult);
214
+ if (lintService_1.LintService.shouldBlockCommit(lintResult)) {
215
+ console.error('\nAmend blocked due to lint errors.');
216
+ console.log('Use --no-lint to skip linting.\n');
217
+ process.exit(1);
218
+ }
219
+ }
220
+ }
221
+ gitService_1.GitService.amendCommit(message);
222
+ console.log('\nāœ“ Commit amended successfully!');
223
+ }
224
+ catch (err) {
225
+ console.error(`\nFailed to amend: ${err instanceof Error ? err.message : err}`);
226
+ process.exit(1);
227
+ }
228
+ }
229
+ function parseMessageForLint(message) {
230
+ const lines = message.split('\n');
231
+ const subject = lines[0];
232
+ const body = lines.slice(2).join('\n').trim() || undefined;
233
+ // Parse the subject line: "type(scope): description" or "emoji type(scope): description"
234
+ const match = subject.match(/^(?:[\p{Emoji}\s]*)?(\w+)(?:\(([^)]+)\))?!?:\s*(.+)$/u);
235
+ if (match) {
236
+ return {
237
+ type: match[1],
238
+ scope: match[2] || undefined,
239
+ description: match[3],
240
+ body,
241
+ full: message,
242
+ isBreaking: subject.includes('!:'),
243
+ };
244
+ }
245
+ // Fallback for non-conventional messages
246
+ return {
247
+ type: 'chore',
248
+ description: subject,
249
+ body,
250
+ full: message,
251
+ };
252
+ }
253
+ async function handleSingleChoice(choice, message, options) {
254
+ switch (choice.toLowerCase()) {
255
+ case 'c':
256
+ case 'commit':
257
+ await commitWithMessage(message, options);
258
+ break;
259
+ case 'e':
260
+ case 'edit':
261
+ const editedMessage = await (0, prompt_1.prompt)('\nEnter your commit message: ');
262
+ if (editedMessage) {
263
+ await commitWithMessage(editedMessage, options);
264
+ }
265
+ else {
266
+ console.log('\nCommit cancelled - empty message provided.');
267
+ }
268
+ break;
269
+ case 'n':
270
+ case 'no':
271
+ case 'cancel':
272
+ console.log('\nCommit cancelled.');
273
+ break;
274
+ default:
275
+ console.log('\nNo action taken. To commit manually, run:');
276
+ console.log(` git commit -m "${escapeForShell(message)}"`);
277
+ }
278
+ }
279
+ async function handleMultipleChoice(choice, suggestions, options) {
280
+ const choiceLower = choice.toLowerCase();
281
+ // Check if it's a number selection
282
+ const num = parseInt(choice, 10);
283
+ if (!isNaN(num) && num >= 1 && num <= suggestions.length) {
284
+ const selected = suggestions[num - 1];
285
+ console.log(`\nSelected: ${selected.label}`);
286
+ await commitWithMessage(selected.message.full, options);
287
+ return;
288
+ }
289
+ // Handle other choices
290
+ switch (choiceLower) {
291
+ case 'e':
292
+ case 'edit':
293
+ const editedMessage = await (0, prompt_1.prompt)('\nEnter your commit message: ');
294
+ if (editedMessage) {
295
+ await commitWithMessage(editedMessage, options);
296
+ }
297
+ else {
298
+ console.log('\nCommit cancelled - empty message provided.');
299
+ }
300
+ break;
301
+ case 'n':
302
+ case 'no':
303
+ case 'cancel':
304
+ console.log('\nCommit cancelled.');
305
+ break;
306
+ default:
307
+ console.log('\nInvalid choice. No action taken.');
308
+ console.log('\nTo commit with the recommended message, run:');
309
+ console.log(` git commit -m "${escapeForShell(suggestions[0].message.full)}"`);
310
+ }
311
+ }
312
+ function displayDryRun(status, suggestions, defaultMessage) {
313
+ const stats = gitService_1.GitService.getDiffStats();
314
+ console.log('\n' + '═'.repeat(60));
315
+ console.log(' DRY RUN - No changes will be made');
316
+ console.log('═'.repeat(60));
317
+ // Show files that would be committed
318
+ console.log('\nšŸ“ Files to be committed:');
319
+ console.log('─'.repeat(40));
320
+ for (const file of status.staged) {
321
+ const statusSymbol = getStatusSymbol(file.status);
322
+ const statusLabel = getStatusLabel(file.status);
323
+ console.log(` ${statusSymbol} ${file.path} (${statusLabel})`);
324
+ }
325
+ console.log(`\n Total: ${stats.filesChanged} file(s), +${stats.insertions}/-${stats.deletions} lines`);
326
+ // Show commit message details
327
+ console.log('\nšŸ“ Commit message:');
328
+ console.log('─'.repeat(40));
329
+ const lines = defaultMessage.full.split('\n');
330
+ for (const line of lines) {
331
+ console.log(` ${line}`);
332
+ }
333
+ // Show message breakdown
334
+ console.log('\nšŸ” Breakdown:');
335
+ console.log('─'.repeat(40));
336
+ console.log(` Type: ${defaultMessage.type}`);
337
+ if (defaultMessage.scope) {
338
+ console.log(` Scope: ${defaultMessage.scope}`);
339
+ }
340
+ console.log(` Description: ${defaultMessage.description}`);
341
+ if (defaultMessage.isBreaking) {
342
+ console.log(` Breaking: Yes`);
343
+ }
344
+ if (defaultMessage.body) {
345
+ console.log(` Body: Yes (multi-line)`);
346
+ }
347
+ // Show alternative suggestions if available
348
+ if (suggestions.length > 1) {
349
+ console.log('\nšŸ“‹ Alternative suggestions available:');
350
+ console.log('─'.repeat(40));
351
+ for (let i = 1; i < suggestions.length; i++) {
352
+ const s = suggestions[i];
353
+ const subjectLine = s.message.full.split('\n')[0];
354
+ console.log(` [${s.id}] ${s.label}: ${subjectLine}`);
355
+ }
356
+ }
357
+ // Show the command that would be executed
358
+ console.log('\n⚔ Command that would be executed:');
359
+ console.log('─'.repeat(40));
360
+ if (defaultMessage.full.includes('\n')) {
361
+ console.log(' git commit -m "...(multi-line message)"');
362
+ console.log('\n Message content:');
363
+ console.log(' ā”Œ' + '─'.repeat(38));
364
+ for (const line of defaultMessage.full.split('\n')) {
365
+ console.log(` │ ${line}`);
366
+ }
367
+ console.log(' ā””' + '─'.repeat(38));
368
+ }
369
+ else {
370
+ console.log(` git commit -m "${escapeForShell(defaultMessage.full)}"`);
371
+ }
372
+ console.log('\n' + '═'.repeat(60));
373
+ console.log(' To commit, run: commit-genie -c');
374
+ console.log(' Or interactively: commit-genie');
375
+ console.log('═'.repeat(60) + '\n');
376
+ }
377
+ function getStatusLabel(status) {
378
+ switch (status) {
379
+ case 'A':
380
+ return 'added';
381
+ case 'M':
382
+ return 'modified';
383
+ case 'D':
384
+ return 'deleted';
385
+ case 'R':
386
+ return 'renamed';
387
+ default:
388
+ return 'unknown';
389
+ }
390
+ }
391
+ function displaySplitWarning(suggestion) {
392
+ console.log('\n⚠ Split Suggestion');
393
+ console.log('─'.repeat(50));
394
+ console.log(`Reason: ${suggestion.reason}`);
395
+ console.log('\nSuggested commits:');
396
+ for (let i = 0; i < suggestion.groups.length; i++) {
397
+ const group = suggestion.groups[i];
398
+ const fileList = group.files.slice(0, 3).map(f => f.path).join(', ');
399
+ const moreFiles = group.files.length > 3 ? ` +${group.files.length - 3} more` : '';
400
+ console.log(`\n ${i + 1}. ${group.suggestedMessage}`);
401
+ console.log(` Files: ${fileList}${moreFiles}`);
402
+ }
403
+ console.log('\n' + '─'.repeat(50));
404
+ console.log('You can proceed with a combined commit or split manually.\n');
405
+ }
406
+ function displaySpellWarning(result) {
407
+ console.log('\n⚠ Spelling Issues');
408
+ console.log('─'.repeat(40));
409
+ for (const error of result.errors) {
410
+ const suggestionText = error.suggestions.length > 0
411
+ ? ` (suggestions: ${error.suggestions.join(', ')})`
412
+ : '';
413
+ console.log(` - "${error.word}"${suggestionText}`);
414
+ }
415
+ console.log('─'.repeat(40) + '\n');
416
+ }
417
+ function displayLintViolations(result) {
418
+ console.log('\n⚠ Lint Issues');
419
+ console.log('─'.repeat(50));
420
+ for (const violation of result.violations) {
421
+ const icon = violation.severity === 'error' ? 'āœ—' : '⚠';
422
+ console.log(` ${icon} [${violation.ruleId}] ${violation.message}`);
423
+ if (violation.suggestion) {
424
+ console.log(` → ${violation.suggestion}`);
425
+ }
426
+ }
427
+ console.log('─'.repeat(50));
428
+ }
429
+ async function handleAmendMode(options) {
430
+ // Check if there are commits to amend
431
+ if (!gitService_1.GitService.hasCommits()) {
432
+ console.error('Error: No commits to amend');
433
+ process.exit(1);
434
+ }
435
+ const lastMessage = gitService_1.GitService.getLastCommitMessage();
436
+ if (!lastMessage) {
437
+ console.error('Error: Could not retrieve last commit message');
438
+ process.exit(1);
439
+ }
440
+ // Get last commit's files for analysis
441
+ const lastCommitFiles = gitService_1.GitService.getLastCommitFiles();
442
+ // Also check for currently staged changes
443
+ const status = gitService_1.GitService.getStatus();
444
+ const hasNewStagedChanges = status.hasStagedChanges;
445
+ console.log('\n═'.repeat(50));
446
+ console.log(' AMEND MODE');
447
+ console.log('═'.repeat(50));
448
+ // Show current message
449
+ console.log('\nCurrent commit message:');
450
+ console.log('─'.repeat(40));
451
+ const currentLines = lastMessage.split('\n');
452
+ for (const line of currentLines) {
453
+ console.log(` ${line}`);
454
+ }
455
+ console.log('─'.repeat(40));
456
+ // Show files from last commit
457
+ console.log('\nFiles in last commit:');
458
+ for (const file of lastCommitFiles) {
459
+ const statusSymbol = getStatusSymbol(file.status);
460
+ console.log(` ${statusSymbol} ${file.path}`);
461
+ }
462
+ // Show newly staged changes if any
463
+ if (hasNewStagedChanges) {
464
+ console.log('\nNewly staged changes (will be included):');
465
+ for (const file of status.staged) {
466
+ const statusSymbol = getStatusSymbol(file.status);
467
+ console.log(` ${statusSymbol} ${file.path}`);
468
+ }
469
+ }
470
+ // Generate new suggestions based on the changes
471
+ // Use last commit's diff for analysis
472
+ let suggestions;
473
+ if (options.ai) {
474
+ console.log('\nUsing AI to enhance amended commit message...');
475
+ suggestions = await analyzerService_1.AnalyzerService.generateSuggestionsWithAI(true);
476
+ }
477
+ else {
478
+ suggestions = analyzerService_1.AnalyzerService.generateMultipleSuggestions();
479
+ }
480
+ const defaultMessage = suggestions[0].message;
481
+ // Check spelling
482
+ const spellResult = spellService_1.SpellService.check(defaultMessage.description);
483
+ if (!spellResult.valid) {
484
+ displaySpellWarning(spellResult);
485
+ }
486
+ // Dry run mode
487
+ if (options.dryRun) {
488
+ console.log('\nšŸ“ Suggested new message:');
489
+ console.log('─'.repeat(40));
490
+ displayMessage(defaultMessage, ' ');
491
+ console.log('─'.repeat(40));
492
+ console.log('\n═'.repeat(50));
493
+ console.log(' DRY RUN - No changes made');
494
+ console.log(' To amend, run: commit-genie --amend');
495
+ console.log('═'.repeat(50) + '\n');
496
+ return;
497
+ }
498
+ // Show suggestions
499
+ console.log('\nSuggested new message:');
500
+ console.log('─'.repeat(40));
501
+ displayMessage(defaultMessage, ' ');
502
+ console.log('─'.repeat(40));
503
+ // Handle based on options
504
+ if (options.commit) {
505
+ await amendWithMessage(defaultMessage.full, options);
506
+ }
507
+ else if (options.interactive !== false) {
508
+ console.log('\nWhat would you like to do?');
509
+ console.log(' [a] Amend with this message');
510
+ console.log(' [e] Edit the message');
511
+ console.log(' [k] Keep original message');
512
+ console.log(' [n] Cancel\n');
513
+ const choice = await (0, prompt_1.prompt)('Your choice (a/e/k/n): ');
514
+ await handleAmendChoice(choice, defaultMessage.full, lastMessage, options);
515
+ }
516
+ else {
517
+ console.log('\nTo amend with this message, run:');
518
+ console.log(' git commit --amend -m "' + escapeForShell(defaultMessage.full) + '"');
519
+ }
520
+ }
521
+ async function handleAmendChoice(choice, newMessage, originalMessage, options) {
522
+ switch (choice.toLowerCase()) {
523
+ case 'a':
524
+ case 'amend':
525
+ await amendWithMessage(newMessage, options);
526
+ break;
527
+ case 'e':
528
+ case 'edit':
529
+ const editedMessage = await (0, prompt_1.prompt)('\nEnter your commit message: ');
530
+ if (editedMessage) {
531
+ await amendWithMessage(editedMessage, options);
532
+ }
533
+ else {
534
+ console.log('\nAmend cancelled - empty message provided.');
535
+ }
536
+ break;
537
+ case 'k':
538
+ case 'keep':
539
+ console.log('\nKept original message. No changes made.');
540
+ break;
541
+ case 'n':
542
+ case 'no':
543
+ case 'cancel':
544
+ console.log('\nAmend cancelled.');
545
+ break;
546
+ default:
547
+ console.log('\nNo action taken.');
548
+ }
549
+ }
550
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.test.d.ts","sourceRoot":"","sources":["../../src/commands/generate.test.ts"],"names":[],"mappings":""}