@mehmetsagir/git-ai 0.0.9 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -319
- package/dist/commit.d.ts +1 -4
- package/dist/commit.d.ts.map +1 -1
- package/dist/commit.js +214 -208
- package/dist/commit.js.map +1 -1
- package/dist/config.d.ts +0 -39
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -95
- package/dist/config.js.map +1 -1
- package/dist/git.d.ts +19 -51
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +137 -269
- package/dist/git.js.map +1 -1
- package/dist/index.js +54 -109
- package/dist/index.js.map +1 -1
- package/dist/openai.d.ts +2 -21
- package/dist/openai.d.ts.map +1 -1
- package/dist/openai.js +17 -96
- package/dist/openai.js.map +1 -1
- package/dist/prompts.d.ts +2 -16
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +32 -146
- package/dist/prompts.js.map +1 -1
- package/dist/reset.d.ts +0 -3
- package/dist/reset.d.ts.map +1 -1
- package/dist/reset.js +10 -20
- package/dist/reset.js.map +1 -1
- package/dist/setup.d.ts +0 -3
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +28 -156
- package/dist/setup.js.map +1 -1
- package/dist/stash.d.ts +2 -0
- package/dist/stash.d.ts.map +1 -0
- package/dist/stash.js +818 -0
- package/dist/stash.js.map +1 -0
- package/dist/types.d.ts +9 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/hunk-parser.d.ts +22 -0
- package/dist/utils/hunk-parser.d.ts.map +1 -0
- package/dist/utils/hunk-parser.js +155 -0
- package/dist/utils/hunk-parser.js.map +1 -0
- package/package.json +8 -9
- package/dist/add.d.ts +0 -5
- package/dist/add.d.ts.map +0 -1
- package/dist/add.js +0 -98
- package/dist/add.js.map +0 -1
- package/dist/commit-processor.d.ts +0 -6
- package/dist/commit-processor.d.ts.map +0 -1
- package/dist/commit-processor.js +0 -226
- package/dist/commit-processor.js.map +0 -1
- package/dist/update.d.ts +0 -9
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js +0 -69
- package/dist/update.js.map +0 -1
- package/dist/user-management.d.ts +0 -10
- package/dist/user-management.d.ts.map +0 -1
- package/dist/user-management.js +0 -175
- package/dist/user-management.js.map +0 -1
- package/dist/users.d.ts +0 -9
- package/dist/users.d.ts.map +0 -1
- package/dist/users.js +0 -129
- package/dist/users.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -24
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -81
- package/dist/utils/validation.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stash.js","sourceRoot":"","sources":["../src/stash.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,41 +1,27 @@
|
|
|
1
|
-
export interface
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
scope: "global" | "local" | "manual" | "current";
|
|
6
|
-
label: string;
|
|
7
|
-
shortcut?: string | null;
|
|
1
|
+
export interface FileInfo {
|
|
2
|
+
file: string;
|
|
3
|
+
status: "new" | "modified" | "deleted" | "renamed";
|
|
4
|
+
isBinary: boolean;
|
|
8
5
|
}
|
|
9
|
-
export interface
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
defaultGitUser?: string | null;
|
|
13
|
-
}
|
|
14
|
-
export interface DiffData {
|
|
15
|
-
staged: string;
|
|
16
|
-
unstaged: string;
|
|
17
|
-
all: string;
|
|
6
|
+
export interface HunkRef {
|
|
7
|
+
file: string;
|
|
8
|
+
hunkIndex: number;
|
|
18
9
|
}
|
|
19
10
|
export interface CommitGroup {
|
|
20
11
|
number: number;
|
|
21
12
|
description: string;
|
|
22
|
-
|
|
13
|
+
hunks: HunkRef[];
|
|
23
14
|
commitMessage: string;
|
|
24
15
|
commitBody?: string;
|
|
25
16
|
}
|
|
26
17
|
export interface AnalysisResult {
|
|
27
18
|
groups: CommitGroup[];
|
|
28
|
-
summary?: string;
|
|
29
19
|
}
|
|
30
20
|
export interface CommitResult {
|
|
31
21
|
group: number;
|
|
32
22
|
message: string;
|
|
33
|
-
|
|
23
|
+
hunks: HunkRef[];
|
|
34
24
|
success: boolean;
|
|
35
25
|
error?: string;
|
|
36
26
|
}
|
|
37
|
-
export interface GitUserInfo {
|
|
38
|
-
name: string | null;
|
|
39
|
-
email: string | null;
|
|
40
|
-
}
|
|
41
27
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAGD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse git diff into hunks for analysis
|
|
3
|
+
* This module ONLY parses - it does NOT modify any files
|
|
4
|
+
*/
|
|
5
|
+
export interface Hunk {
|
|
6
|
+
file: string;
|
|
7
|
+
index: number;
|
|
8
|
+
header: string;
|
|
9
|
+
content: string;
|
|
10
|
+
summary: string;
|
|
11
|
+
}
|
|
12
|
+
export interface FileDiff {
|
|
13
|
+
file: string;
|
|
14
|
+
isNew: boolean;
|
|
15
|
+
isDeleted: boolean;
|
|
16
|
+
isBinary: boolean;
|
|
17
|
+
hunks: Hunk[];
|
|
18
|
+
}
|
|
19
|
+
export declare function parseDiff(diffOutput: string): FileDiff[];
|
|
20
|
+
export declare function formatForAI(files: FileDiff[]): string;
|
|
21
|
+
export declare function getStats(files: FileDiff[]): string;
|
|
22
|
+
//# sourceMappingURL=hunk-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hunk-parser.d.ts","sourceRoot":"","sources":["../../src/utils/hunk-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAaD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CAkGxD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAuBrD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAmBlD"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Parse git diff into hunks for analysis
|
|
4
|
+
* This module ONLY parses - it does NOT modify any files
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.parseDiff = parseDiff;
|
|
8
|
+
exports.formatForAI = formatForAI;
|
|
9
|
+
exports.getStats = getStats;
|
|
10
|
+
function isValidFilePath(path) {
|
|
11
|
+
if (!path || path.length === 0)
|
|
12
|
+
return false;
|
|
13
|
+
if (path.length > 500)
|
|
14
|
+
return false;
|
|
15
|
+
if (path.includes('\n'))
|
|
16
|
+
return false;
|
|
17
|
+
if (path.includes('${'))
|
|
18
|
+
return false;
|
|
19
|
+
if (path.includes('`'))
|
|
20
|
+
return false;
|
|
21
|
+
if (path.startsWith(' ') || path.endsWith(' '))
|
|
22
|
+
return false;
|
|
23
|
+
if (/[<>"|?*]/.test(path))
|
|
24
|
+
return false;
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
function parseDiff(diffOutput) {
|
|
28
|
+
const files = [];
|
|
29
|
+
const fileParts = ('\n' + diffOutput).split(/\n(?=diff --git a\/)/);
|
|
30
|
+
for (const part of fileParts) {
|
|
31
|
+
if (!part.trim())
|
|
32
|
+
continue;
|
|
33
|
+
const fileMatch = part.match(/^diff --git a\/(.+) b\/(.+)$/m);
|
|
34
|
+
if (!fileMatch)
|
|
35
|
+
continue;
|
|
36
|
+
const file = fileMatch[2].trim();
|
|
37
|
+
if (!isValidFilePath(file)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const headerEnd = part.indexOf('@@');
|
|
41
|
+
const header = headerEnd > 0 ? part.substring(0, headerEnd) : part;
|
|
42
|
+
const isNew = header.includes('new file mode') || header.includes('--- /dev/null');
|
|
43
|
+
const isDeleted = header.includes('deleted file mode') || header.includes('+++ /dev/null');
|
|
44
|
+
const isBinary = header.includes('Binary file') || header.includes('GIT binary patch');
|
|
45
|
+
const hunks = [];
|
|
46
|
+
if (!isBinary) {
|
|
47
|
+
const hunkRegex = /@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@([^\n]*)/g;
|
|
48
|
+
let match;
|
|
49
|
+
let hunkIndex = 0;
|
|
50
|
+
const matches = [];
|
|
51
|
+
while ((match = hunkRegex.exec(part)) !== null) {
|
|
52
|
+
matches.push({
|
|
53
|
+
start: match.index,
|
|
54
|
+
header: match[0],
|
|
55
|
+
context: match[5]?.trim() || ''
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
for (let i = 0; i < matches.length; i++) {
|
|
59
|
+
const current = matches[i];
|
|
60
|
+
const nextStart = i < matches.length - 1 ? matches[i + 1].start : part.length;
|
|
61
|
+
const hunkContent = part.substring(current.start, nextStart).trim();
|
|
62
|
+
const lines = hunkContent.split('\n').slice(1);
|
|
63
|
+
const additions = lines.filter(l => l.startsWith('+')).length;
|
|
64
|
+
const deletions = lines.filter(l => l.startsWith('-')).length;
|
|
65
|
+
let summary = '';
|
|
66
|
+
if (current.context) {
|
|
67
|
+
summary = current.context;
|
|
68
|
+
}
|
|
69
|
+
else if (additions > 0 && deletions > 0) {
|
|
70
|
+
summary = `Modified ${additions} lines, removed ${deletions} lines`;
|
|
71
|
+
}
|
|
72
|
+
else if (additions > 0) {
|
|
73
|
+
summary = `Added ${additions} lines`;
|
|
74
|
+
}
|
|
75
|
+
else if (deletions > 0) {
|
|
76
|
+
summary = `Removed ${deletions} lines`;
|
|
77
|
+
}
|
|
78
|
+
hunks.push({
|
|
79
|
+
file,
|
|
80
|
+
index: hunkIndex++,
|
|
81
|
+
header: current.header,
|
|
82
|
+
content: hunkContent,
|
|
83
|
+
summary
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (hunks.length === 0) {
|
|
88
|
+
hunks.push({
|
|
89
|
+
file,
|
|
90
|
+
index: 0,
|
|
91
|
+
header: isBinary ? '[Binary]' : '[File]',
|
|
92
|
+
content: '',
|
|
93
|
+
summary: isBinary
|
|
94
|
+
? 'Binary file'
|
|
95
|
+
: isNew
|
|
96
|
+
? 'New file'
|
|
97
|
+
: isDeleted
|
|
98
|
+
? 'Deleted file'
|
|
99
|
+
: 'File change'
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
files.push({
|
|
103
|
+
file,
|
|
104
|
+
isNew,
|
|
105
|
+
isDeleted,
|
|
106
|
+
isBinary,
|
|
107
|
+
hunks
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return files;
|
|
111
|
+
}
|
|
112
|
+
function formatForAI(files) {
|
|
113
|
+
let output = '';
|
|
114
|
+
for (const file of files) {
|
|
115
|
+
output += `\n### FILE: ${file.file}`;
|
|
116
|
+
if (file.isNew)
|
|
117
|
+
output += ' [NEW]';
|
|
118
|
+
if (file.isDeleted)
|
|
119
|
+
output += ' [DELETED]';
|
|
120
|
+
if (file.isBinary)
|
|
121
|
+
output += ' [BINARY]';
|
|
122
|
+
output += '\n';
|
|
123
|
+
for (const hunk of file.hunks) {
|
|
124
|
+
output += `\n--- Hunk ${hunk.index} ---\n`;
|
|
125
|
+
if (hunk.summary) {
|
|
126
|
+
output += `Summary: ${hunk.summary}\n`;
|
|
127
|
+
}
|
|
128
|
+
if (!file.isBinary && hunk.content) {
|
|
129
|
+
output += hunk.content + '\n';
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
output += '\n';
|
|
133
|
+
}
|
|
134
|
+
return output;
|
|
135
|
+
}
|
|
136
|
+
function getStats(files) {
|
|
137
|
+
const totalFiles = files.length;
|
|
138
|
+
const totalHunks = files.reduce((sum, f) => sum + f.hunks.length, 0);
|
|
139
|
+
const newFiles = files.filter(f => f.isNew).length;
|
|
140
|
+
const deletedFiles = files.filter(f => f.isDeleted).length;
|
|
141
|
+
const binaryFiles = files.filter(f => f.isBinary).length;
|
|
142
|
+
let stats = `${totalFiles} file(s), ${totalHunks} change(s)`;
|
|
143
|
+
const details = [];
|
|
144
|
+
if (newFiles > 0)
|
|
145
|
+
details.push(`${newFiles} new`);
|
|
146
|
+
if (deletedFiles > 0)
|
|
147
|
+
details.push(`${deletedFiles} deleted`);
|
|
148
|
+
if (binaryFiles > 0)
|
|
149
|
+
details.push(`${binaryFiles} binary`);
|
|
150
|
+
if (details.length > 0) {
|
|
151
|
+
stats += ` (${details.join(', ')})`;
|
|
152
|
+
}
|
|
153
|
+
return stats;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=hunk-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hunk-parser.js","sourceRoot":"","sources":["../../src/utils/hunk-parser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA6BH,8BAkGC;AAED,kCAuBC;AAED,4BAmBC;AA3JD,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,SAAS,CAAC,UAAkB;IAC1C,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,MAAM,SAAS,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEnE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC3F,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAEvF,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,6CAA6C,CAAC;YAChE,IAAI,KAAK,CAAC;YACV,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,MAAM,OAAO,GAAyD,EAAE,CAAC;YAEzE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;oBAChB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;iBAChC,CAAC,CAAC;YACL,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBAE9E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEpE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;gBAE9D,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBAC5B,CAAC;qBAAM,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBAC1C,OAAO,GAAG,YAAY,SAAS,mBAAmB,SAAS,QAAQ,CAAC;gBACtE,CAAC;qBAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBACzB,OAAO,GAAG,SAAS,SAAS,QAAQ,CAAC;gBACvC,CAAC;qBAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBACzB,OAAO,GAAG,WAAW,SAAS,QAAQ,CAAC;gBACzC,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,KAAK,EAAE,SAAS,EAAE;oBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO,EAAE,WAAW;oBACpB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;gBACxC,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,QAAQ;oBACf,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,KAAK;wBACL,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,SAAS;4BACT,CAAC,CAAC,cAAc;4BAChB,CAAC,CAAC,aAAa;aACtB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,KAAK;YACL,SAAS;YACT,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,WAAW,CAAC,KAAiB;IAC3C,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,QAAQ,CAAC;QACnC,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,YAAY,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,WAAW,CAAC;QACzC,MAAM,IAAI,IAAI,CAAC;QAEf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,cAAc,IAAI,CAAC,KAAK,QAAQ,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAiB;IACxC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAEzD,IAAI,KAAK,GAAG,GAAG,UAAU,aAAa,UAAU,YAAY,CAAC;IAE7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC;IAClD,IAAI,YAAY,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,UAAU,CAAC,CAAC;IAC9D,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC;IAE3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mehmetsagir/git-ai",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.18",
|
|
4
4
|
"description": "AI-powered git commit tool that analyzes diffs and creates conventional commit messages",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -12,10 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"dist",
|
|
15
|
-
"bin"
|
|
16
|
-
"README.md",
|
|
17
|
-
"package.json",
|
|
18
|
-
"package-lock.json"
|
|
15
|
+
"bin"
|
|
19
16
|
],
|
|
20
17
|
"keywords": [
|
|
21
18
|
"git",
|
|
@@ -33,8 +30,7 @@
|
|
|
33
30
|
"inquirer": "^8.2.6",
|
|
34
31
|
"openai": "^4.20.1",
|
|
35
32
|
"ora": "^5.4.1",
|
|
36
|
-
"simple-git": "^3.20.0"
|
|
37
|
-
"update-notifier": "^7.0.0"
|
|
33
|
+
"simple-git": "^3.20.0"
|
|
38
34
|
},
|
|
39
35
|
"devDependencies": {
|
|
40
36
|
"@types/inquirer": "^8.2.10",
|
|
@@ -46,7 +42,10 @@
|
|
|
46
42
|
},
|
|
47
43
|
"repository": {
|
|
48
44
|
"type": "git",
|
|
49
|
-
"url": "https://github.com/mehmetsagir/git-ai.git"
|
|
45
|
+
"url": "git+https://github.com/mehmetsagir/git-ai.git"
|
|
50
46
|
},
|
|
51
|
-
"
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/mehmetsagir/git-ai/issues"
|
|
49
|
+
},
|
|
50
|
+
"homepage": "https://github.com/mehmetsagir/git-ai#readme"
|
|
52
51
|
}
|
package/dist/add.d.ts
DELETED
package/dist/add.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA2D7C"}
|
package/dist/add.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.addUser = addUser;
|
|
40
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
-
const inquirer_1 = __importDefault(require("inquirer"));
|
|
42
|
-
const config = __importStar(require("./config"));
|
|
43
|
-
const userManagement = __importStar(require("./user-management"));
|
|
44
|
-
/**
|
|
45
|
-
* Add a new git user
|
|
46
|
-
*/
|
|
47
|
-
async function addUser() {
|
|
48
|
-
console.log(chalk_1.default.blue.bold('\n➕ Add Git User\n'));
|
|
49
|
-
if (!config.configExists()) {
|
|
50
|
-
console.log(chalk_1.default.yellow('⚠ Configuration not found. Please run setup first.\n'));
|
|
51
|
-
console.log(chalk_1.default.blue('Run: git-ai setup\n'));
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const existingProfiles = config.getGitUsers();
|
|
55
|
-
if (existingProfiles.length > 0) {
|
|
56
|
-
console.log(chalk_1.default.blue('Current git user profiles:\n'));
|
|
57
|
-
existingProfiles.forEach((profile, index) => {
|
|
58
|
-
const shortcutInfo = profile.shortcut
|
|
59
|
-
? chalk_1.default.yellow(` [shortcut: ${profile.shortcut}]`)
|
|
60
|
-
: '';
|
|
61
|
-
console.log(chalk_1.default.cyan(` ${index + 1}. ${profile.label}${shortcutInfo}`));
|
|
62
|
-
});
|
|
63
|
-
console.log('\n');
|
|
64
|
-
}
|
|
65
|
-
console.log(chalk_1.default.blue('💡 Tip: Type "q" and press Enter at any input to cancel.\n'));
|
|
66
|
-
await userManagement.addMoreGitUsers(existingProfiles);
|
|
67
|
-
const updatedProfiles = config.getGitUsers();
|
|
68
|
-
if (updatedProfiles.length > 1) {
|
|
69
|
-
const { updateDefault } = await inquirer_1.default.prompt([
|
|
70
|
-
{
|
|
71
|
-
type: 'confirm',
|
|
72
|
-
name: 'updateDefault',
|
|
73
|
-
message: 'Would you like to update the default git user?',
|
|
74
|
-
default: false
|
|
75
|
-
}
|
|
76
|
-
]);
|
|
77
|
-
if (updateDefault) {
|
|
78
|
-
const { defaultUser } = await inquirer_1.default.prompt([
|
|
79
|
-
{
|
|
80
|
-
type: 'list',
|
|
81
|
-
name: 'defaultUser',
|
|
82
|
-
message: 'Select default git user:',
|
|
83
|
-
choices: updatedProfiles.map(p => ({
|
|
84
|
-
name: p.label,
|
|
85
|
-
value: p.id
|
|
86
|
-
}))
|
|
87
|
-
}
|
|
88
|
-
]);
|
|
89
|
-
config.setDefaultGitUser(defaultUser);
|
|
90
|
-
const selectedProfile = updatedProfiles.find(p => p.id === defaultUser);
|
|
91
|
-
if (selectedProfile) {
|
|
92
|
-
console.log(chalk_1.default.green(`✓ Default git user updated: ${selectedProfile.label}\n`));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
console.log(chalk_1.default.green('✓ User addition completed!\n'));
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=add.js.map
|
package/dist/add.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { CommitGroup, CommitResult, GitUserInfo } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Process all commit groups
|
|
4
|
-
*/
|
|
5
|
-
export declare function processAllCommitGroups(groups: CommitGroup[], selectedUser: GitUserInfo | null): Promise<CommitResult[]>;
|
|
6
|
-
//# sourceMappingURL=commit-processor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commit-processor.d.ts","sourceRoot":"","sources":["../src/commit-processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA4KjE;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,EAAE,EACrB,YAAY,EAAE,WAAW,GAAG,IAAI,GAC/B,OAAO,CAAC,YAAY,EAAE,CAAC,CAqGzB"}
|
package/dist/commit-processor.js
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.processAllCommitGroups = processAllCommitGroups;
|
|
40
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
-
const ora_1 = __importDefault(require("ora"));
|
|
42
|
-
const git = __importStar(require("./git"));
|
|
43
|
-
const errors_1 = require("./utils/errors");
|
|
44
|
-
/**
|
|
45
|
-
* Process and commit a single group
|
|
46
|
-
*/
|
|
47
|
-
async function processCommitGroup(group, selectedUser, filesToUse, processedFiles) {
|
|
48
|
-
if (filesToUse.length === 0) {
|
|
49
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: No files to process, skipping.\n`));
|
|
50
|
-
return { success: false, filesProcessed: [] };
|
|
51
|
-
}
|
|
52
|
-
// Mark files as processed
|
|
53
|
-
filesToUse.forEach((file) => processedFiles.add(file));
|
|
54
|
-
// Check if files are already staged
|
|
55
|
-
const currentlyStaged = await git.getStagedFiles();
|
|
56
|
-
const filesAlreadyStaged = filesToUse.filter((file) => currentlyStaged.includes(file));
|
|
57
|
-
const filesToStage = filesAlreadyStaged.length === filesToUse.length
|
|
58
|
-
? [] // All files already staged
|
|
59
|
-
: filesToUse.filter((file) => !currentlyStaged.includes(file));
|
|
60
|
-
// Stage files if needed
|
|
61
|
-
if (filesToStage.length > 0) {
|
|
62
|
-
const stageSpinner = (0, ora_1.default)(`Group ${group.number}: Staging ${filesToStage.length} file(s)...`).start();
|
|
63
|
-
try {
|
|
64
|
-
await git.stageFiles(filesToStage);
|
|
65
|
-
stageSpinner.succeed(`Group ${group.number}: Files staged`);
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
stageSpinner.fail(`Group ${group.number}: Error staging files: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
69
|
-
return { success: false, filesProcessed: filesToUse };
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else if (filesAlreadyStaged.length > 0) {
|
|
73
|
-
}
|
|
74
|
-
// Set git user before committing (local scope to not affect global config)
|
|
75
|
-
if (selectedUser?.name && selectedUser?.email) {
|
|
76
|
-
try {
|
|
77
|
-
const currentUser = await git.getGitUserInfo();
|
|
78
|
-
const needsChange = currentUser.name !== selectedUser.name ||
|
|
79
|
-
currentUser.email !== selectedUser.email;
|
|
80
|
-
if (needsChange) {
|
|
81
|
-
await git.setGitUser(selectedUser.name, selectedUser.email, "local");
|
|
82
|
-
console.log(chalk_1.default.green(`✓ Group ${group.number}: Git user changed to ${selectedUser.name} <${selectedUser.email}>\n`));
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: Failed to set git user: ${(0, errors_1.getErrorMessage)(error)}\n`));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const fullMessage = group.commitBody
|
|
90
|
-
? `${group.commitMessage}\n\n${group.commitBody}`
|
|
91
|
-
: group.commitMessage;
|
|
92
|
-
// Verify only the intended files are staged before committing
|
|
93
|
-
const stagedBeforeCommit = await git.getStagedFiles();
|
|
94
|
-
const unexpectedStaged = stagedBeforeCommit.filter((file) => !filesToUse.includes(file));
|
|
95
|
-
if (unexpectedStaged.length > 0) {
|
|
96
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: Fixing staging (unexpected files detected)\n`));
|
|
97
|
-
try {
|
|
98
|
-
await git.unstageAll();
|
|
99
|
-
if (filesToUse.length > 0) {
|
|
100
|
-
await git.stageFiles(filesToUse);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
catch (error) {
|
|
104
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: Staging fix failed: ${(0, errors_1.getErrorMessage)(error)}\n`));
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// Final check - ensure we have files to commit
|
|
108
|
-
const finalStaged = await git.getStagedFiles();
|
|
109
|
-
if (finalStaged.length === 0) {
|
|
110
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: No files staged, skipping commit.\n`));
|
|
111
|
-
return { success: false, filesProcessed: filesToUse };
|
|
112
|
-
}
|
|
113
|
-
const commitSpinner = (0, ora_1.default)(`Group ${group.number}: Creating commit "${group.commitMessage}"...`).start();
|
|
114
|
-
try {
|
|
115
|
-
await git.createCommit(fullMessage, selectedUser?.name || null, selectedUser?.email || null);
|
|
116
|
-
// Verify the commit was made with the correct user
|
|
117
|
-
if (selectedUser) {
|
|
118
|
-
const currentUser = await git.getGitUserInfo();
|
|
119
|
-
if (currentUser.name !== selectedUser.name ||
|
|
120
|
-
currentUser.email !== selectedUser.email) {
|
|
121
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: User mismatch (expected: ${selectedUser.name}, got: ${currentUser.name})\n`));
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
commitSpinner.succeed(`Group ${group.number}: Committed - ${group.commitMessage}`);
|
|
125
|
-
return {
|
|
126
|
-
success: true,
|
|
127
|
-
filesProcessed: filesToUse,
|
|
128
|
-
message: group.commitMessage,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
const errorMessage = (0, errors_1.getErrorMessage)(error);
|
|
133
|
-
commitSpinner.fail(`Group ${group.number}: Commit error - ${errorMessage}`);
|
|
134
|
-
return {
|
|
135
|
-
success: false,
|
|
136
|
-
filesProcessed: filesToUse,
|
|
137
|
-
message: group.commitMessage,
|
|
138
|
-
error: errorMessage,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Process all commit groups
|
|
144
|
-
*/
|
|
145
|
-
async function processAllCommitGroups(groups, selectedUser) {
|
|
146
|
-
const prepareSpinner = (0, ora_1.default)("Preparing files...").start();
|
|
147
|
-
// Check if there are already staged files
|
|
148
|
-
const initialStaged = await git.getStagedFiles();
|
|
149
|
-
const hasStagedFiles = initialStaged.length > 0;
|
|
150
|
-
if (!hasStagedFiles) {
|
|
151
|
-
try {
|
|
152
|
-
await git.unstageAll();
|
|
153
|
-
prepareSpinner.succeed("Ready");
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
prepareSpinner.fail(`Error: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
prepareSpinner.succeed(`${initialStaged.length} staged file(s) ready`);
|
|
161
|
-
}
|
|
162
|
-
const commitResults = [];
|
|
163
|
-
const processedFiles = new Set();
|
|
164
|
-
console.log(chalk_1.default.blue(`\n📦 Creating ${groups.length} commits...\n`));
|
|
165
|
-
for (const group of groups) {
|
|
166
|
-
// Get current git status - this will exclude already committed files
|
|
167
|
-
const currentStaged = await git.getStagedFiles();
|
|
168
|
-
const currentChanged = await git.getAllChangedFiles();
|
|
169
|
-
// If there are staged files, use them for this commit
|
|
170
|
-
// Otherwise, use unstaged files from the group
|
|
171
|
-
let filesToUse = [];
|
|
172
|
-
if (currentStaged.length > 0 && processedFiles.size === 0) {
|
|
173
|
-
// First group and we have staged files - use them
|
|
174
|
-
filesToUse = currentStaged;
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// Get remaining files (exclude already processed ones)
|
|
178
|
-
const remainingFiles = currentChanged.filter((file) => !processedFiles.has(file));
|
|
179
|
-
// Match group files with remaining files
|
|
180
|
-
const groupFiles = group.files
|
|
181
|
-
.map((file) => {
|
|
182
|
-
const normalizedFile = file.replace(/^\.\//, "").replace(/^\//, "");
|
|
183
|
-
return remainingFiles.find((changed) => {
|
|
184
|
-
const normalizedChanged = changed
|
|
185
|
-
.replace(/^\.\//, "")
|
|
186
|
-
.replace(/^\//, "");
|
|
187
|
-
return (normalizedChanged === normalizedFile ||
|
|
188
|
-
normalizedChanged.endsWith(normalizedFile) ||
|
|
189
|
-
normalizedFile.endsWith(normalizedChanged));
|
|
190
|
-
});
|
|
191
|
-
})
|
|
192
|
-
.filter((file) => Boolean(file));
|
|
193
|
-
filesToUse =
|
|
194
|
-
groupFiles.length > 0 ? groupFiles : remainingFiles.slice(0, 1);
|
|
195
|
-
}
|
|
196
|
-
if (filesToUse.length === 0) {
|
|
197
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: No files available, skipping.\n`));
|
|
198
|
-
commitResults.push({
|
|
199
|
-
group: group.number,
|
|
200
|
-
message: group.commitMessage,
|
|
201
|
-
files: 0,
|
|
202
|
-
success: false,
|
|
203
|
-
error: "No files available",
|
|
204
|
-
});
|
|
205
|
-
continue;
|
|
206
|
-
}
|
|
207
|
-
const result = await processCommitGroup(group, selectedUser, filesToUse, processedFiles);
|
|
208
|
-
commitResults.push({
|
|
209
|
-
group: group.number,
|
|
210
|
-
message: result.message || group.commitMessage,
|
|
211
|
-
files: result.filesProcessed?.length || 0,
|
|
212
|
-
success: result.success,
|
|
213
|
-
error: result.error,
|
|
214
|
-
});
|
|
215
|
-
// After each commit, unstage any remaining staged files
|
|
216
|
-
// This ensures the next group only stages its own files
|
|
217
|
-
try {
|
|
218
|
-
await git.unstageAll();
|
|
219
|
-
}
|
|
220
|
-
catch (error) {
|
|
221
|
-
// Continue even if error
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
return commitResults;
|
|
225
|
-
}
|
|
226
|
-
//# sourceMappingURL=commit-processor.js.map
|