agentmap 0.7.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +96 -0
- package/README.md +24 -0
- package/dist/cli.js +44 -12
- package/dist/cli.js.map +1 -1
- package/dist/extract/definitions.js +12 -12
- package/dist/extract/definitions.js.map +1 -1
- package/dist/extract/definitions.test.js +30 -259
- package/dist/extract/definitions.test.js.map +1 -1
- package/dist/extract/git-status.d.ts +11 -4
- package/dist/extract/git-status.d.ts.map +1 -1
- package/dist/extract/git-status.js +21 -16
- package/dist/extract/git-status.js.map +1 -1
- package/dist/extract/markdown.js +1 -1
- package/dist/extract/markdown.test.js +3 -3
- package/dist/extract/markdown.test.js.map +1 -1
- package/dist/extract/marker.js +1 -1
- package/dist/extract/marker.test.js +4 -4
- package/dist/extract/marker.test.js.map +1 -1
- package/dist/extract/submodules.d.ts +12 -0
- package/dist/extract/submodules.d.ts.map +1 -0
- package/dist/extract/submodules.js +234 -0
- package/dist/extract/submodules.js.map +1 -0
- package/dist/extract/submodules.test.d.ts +2 -0
- package/dist/extract/submodules.test.d.ts.map +1 -0
- package/dist/extract/submodules.test.js +84 -0
- package/dist/extract/submodules.test.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +10 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +41 -0
- package/dist/logger.js.map +1 -0
- package/dist/map/builder.d.ts +3 -3
- package/dist/map/builder.d.ts.map +1 -1
- package/dist/map/builder.js +59 -9
- package/dist/map/builder.js.map +1 -1
- package/dist/map/builder.test.d.ts +2 -0
- package/dist/map/builder.test.d.ts.map +1 -0
- package/dist/map/builder.test.js +66 -0
- package/dist/map/builder.test.js.map +1 -0
- package/dist/map/truncate.d.ts +7 -3
- package/dist/map/truncate.d.ts.map +1 -1
- package/dist/map/truncate.js +90 -9
- package/dist/map/truncate.js.map +1 -1
- package/dist/map/yaml.d.ts.map +1 -1
- package/dist/map/yaml.js +13 -3
- package/dist/map/yaml.js.map +1 -1
- package/dist/scanner.d.ts +9 -2
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +172 -49
- package/dist/scanner.js.map +1 -1
- package/dist/scanner.test.d.ts +2 -0
- package/dist/scanner.test.d.ts.map +1 -0
- package/dist/scanner.test.js +84 -0
- package/dist/scanner.test.js.map +1 -0
- package/dist/test-helpers/git-test-helpers.d.ts +13 -0
- package/dist/test-helpers/git-test-helpers.d.ts.map +1 -0
- package/dist/test-helpers/git-test-helpers.js +48 -0
- package/dist/test-helpers/git-test-helpers.js.map +1 -0
- package/dist/types.d.ts +42 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +15 -3
- package/src/cli.ts +164 -0
- package/src/extract/definitions.test.ts +2040 -0
- package/src/extract/definitions.ts +379 -0
- package/src/extract/git-status.test.ts +507 -0
- package/src/extract/git-status.ts +359 -0
- package/src/extract/markdown.test.ts +159 -0
- package/src/extract/markdown.ts +202 -0
- package/src/extract/marker.test.ts +566 -0
- package/src/extract/marker.ts +398 -0
- package/src/extract/submodules.test.ts +95 -0
- package/src/extract/submodules.ts +269 -0
- package/src/extract/utils.ts +27 -0
- package/src/index.ts +106 -0
- package/src/languages/cpp.ts +129 -0
- package/src/languages/go.ts +72 -0
- package/src/languages/index.ts +231 -0
- package/src/languages/javascript.ts +33 -0
- package/src/languages/python.ts +41 -0
- package/src/languages/rust.ts +72 -0
- package/src/languages/typescript.ts +74 -0
- package/src/languages/zig.ts +106 -0
- package/src/logger.ts +55 -0
- package/src/map/builder.test.ts +72 -0
- package/src/map/builder.ts +175 -0
- package/src/map/truncate.ts +188 -0
- package/src/map/yaml.ts +66 -0
- package/src/parser/index.ts +53 -0
- package/src/parser/languages.ts +64 -0
- package/src/scanner.test.ts +95 -0
- package/src/scanner.ts +364 -0
- package/src/test-helpers/git-test-helpers.ts +62 -0
- package/src/types.ts +191 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Parse git diff output and calculate definition-level diff stats.
|
|
2
2
|
// Uses defensive git options for cross-platform reliability.
|
|
3
3
|
import { execSync } from 'child_process';
|
|
4
|
+
import { createConsoleLogger } from '../logger.js';
|
|
4
5
|
/**
|
|
5
6
|
* Defensive git options to ensure consistent output across platforms/configs
|
|
6
7
|
*/
|
|
@@ -28,7 +29,7 @@ function normalizePath(path) {
|
|
|
28
29
|
/**
|
|
29
30
|
* Safely execute a git command, returning empty string on any error
|
|
30
31
|
*/
|
|
31
|
-
function safeExec(cmd, dir) {
|
|
32
|
+
function safeExec(cmd, dir, logger) {
|
|
32
33
|
try {
|
|
33
34
|
return execSync(cmd, {
|
|
34
35
|
cwd: dir,
|
|
@@ -38,9 +39,8 @@ function safeExec(cmd, dir) {
|
|
|
38
39
|
});
|
|
39
40
|
}
|
|
40
41
|
catch (err) {
|
|
41
|
-
// Log error so user knows something happened
|
|
42
42
|
const message = err instanceof Error ? err.message : String(err);
|
|
43
|
-
|
|
43
|
+
logger.warn(`Warning: git diff failed: ${message}`);
|
|
44
44
|
return '';
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -154,44 +154,49 @@ export function parseDiff(diffOutput) {
|
|
|
154
154
|
/**
|
|
155
155
|
* Get file-level diff stats using --numstat (most reliable)
|
|
156
156
|
*/
|
|
157
|
-
export function getFileStats(dir) {
|
|
157
|
+
export function getFileStats(dir, logger = createConsoleLogger()) {
|
|
158
158
|
const cmd = `git diff ${GIT_DIFF_OPTIONS} --numstat HEAD`;
|
|
159
|
-
const output = safeExec(cmd, dir);
|
|
159
|
+
const output = safeExec(cmd, dir, logger);
|
|
160
160
|
return parseNumstat(output);
|
|
161
161
|
}
|
|
162
162
|
/**
|
|
163
163
|
* Get hunk-level diff for definition analysis
|
|
164
164
|
*/
|
|
165
|
-
export function getHunkDiff(dir) {
|
|
165
|
+
export function getHunkDiff(dir, logger = createConsoleLogger()) {
|
|
166
166
|
const cmd = `git diff ${GIT_DIFF_OPTIONS} --unified=0 HEAD`;
|
|
167
|
-
const output = safeExec(cmd, dir);
|
|
167
|
+
const output = safeExec(cmd, dir, logger);
|
|
168
168
|
return parseDiff(output);
|
|
169
169
|
}
|
|
170
|
-
|
|
171
|
-
* Combined function to get all diff data needed
|
|
172
|
-
* Returns both file stats and hunk data, with error isolation
|
|
173
|
-
*/
|
|
174
|
-
export function getAllDiffData(dir) {
|
|
170
|
+
export function getAllDiffData(dir, submodulePaths, logger = createConsoleLogger()) {
|
|
175
171
|
// Get file stats (for file-level +N-M display)
|
|
176
172
|
let fileStats;
|
|
177
173
|
try {
|
|
178
|
-
fileStats = getFileStats(dir);
|
|
174
|
+
fileStats = getFileStats(dir, logger);
|
|
179
175
|
}
|
|
180
176
|
catch (err) {
|
|
181
177
|
const message = err instanceof Error ? err.message : String(err);
|
|
182
|
-
|
|
178
|
+
logger.warn(`Warning: failed to get file stats: ${message}`);
|
|
183
179
|
fileStats = new Map();
|
|
184
180
|
}
|
|
185
181
|
// Get hunk data (for definition-level analysis)
|
|
186
182
|
let fileDiffs;
|
|
187
183
|
try {
|
|
188
|
-
fileDiffs = getHunkDiff(dir);
|
|
184
|
+
fileDiffs = getHunkDiff(dir, logger);
|
|
189
185
|
}
|
|
190
186
|
catch (err) {
|
|
191
187
|
const message = err instanceof Error ? err.message : String(err);
|
|
192
|
-
|
|
188
|
+
logger.warn(`Warning: failed to get hunk diff: ${message}`);
|
|
193
189
|
fileDiffs = new Map();
|
|
194
190
|
}
|
|
191
|
+
// Filter out submodule paths - their diff output is misleading:
|
|
192
|
+
// - numstat shows 1/1 for pointer changes (not real line counts)
|
|
193
|
+
// - unified diff shows "Subproject commit" pseudo-patches
|
|
194
|
+
if (submodulePaths && submodulePaths.size > 0) {
|
|
195
|
+
for (const subPath of submodulePaths) {
|
|
196
|
+
fileStats.delete(subPath);
|
|
197
|
+
fileDiffs.delete(subPath);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
195
200
|
return { fileStats, fileDiffs };
|
|
196
201
|
}
|
|
197
202
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-status.js","sourceRoot":"","sources":["../../src/extract/git-status.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,6DAA6D;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"git-status.js","sourceRoot":"","sources":["../../src/extract/git-status.ts"],"names":[],"mappings":"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"}
|
package/dist/extract/markdown.js
CHANGED
|
@@ -101,9 +101,9 @@ with multiple lines"
|
|
|
101
101
|
const lines = Array.from({ length: 40 }, (_, i) => `- Item ${i + 1}`).join('\n');
|
|
102
102
|
const desc = await testMarkdown(`# Title\n\n${lines}`);
|
|
103
103
|
const descLines = desc?.split('\n') ?? [];
|
|
104
|
-
//
|
|
105
|
-
expect(descLines.length).toBe(
|
|
106
|
-
expect(descLines[
|
|
104
|
+
// 20 content lines + 1 truncation indicator (Title + 19 items, then indicator)
|
|
105
|
+
expect(descLines.length).toBe(21);
|
|
106
|
+
expect(descLines[20]).toBe('... and 21 more lines');
|
|
107
107
|
});
|
|
108
108
|
test('returns null for empty markdown', async () => {
|
|
109
109
|
const desc = await testMarkdown(``);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.test.js","sourceRoot":"","sources":["../../src/extract/markdown.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"markdown.test.js","sourceRoot":"","sources":["../../src/extract/markdown.test.ts"],"names":[],"mappings":"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"}
|
package/dist/extract/marker.js
CHANGED
|
@@ -5,7 +5,7 @@ import { parseCode, detectLanguage } from '../parser/index.js';
|
|
|
5
5
|
import { readFirstLines } from './utils.js';
|
|
6
6
|
export { extractMarkdownDescription } from './markdown.js';
|
|
7
7
|
const MAX_LINES = 50;
|
|
8
|
-
const MAX_DESC_LINES =
|
|
8
|
+
const MAX_DESC_LINES = 20;
|
|
9
9
|
/**
|
|
10
10
|
* Patterns that strongly indicate a license/copyright comment.
|
|
11
11
|
* These are checked against comment text.
|
|
@@ -495,13 +495,13 @@ describe('Edge cases', () => {
|
|
|
495
495
|
`);
|
|
496
496
|
expect(desc).toBeUndefined();
|
|
497
497
|
});
|
|
498
|
-
test('description limited to
|
|
498
|
+
test('description limited to 20 lines with truncation indicator', async () => {
|
|
499
499
|
const lines = Array.from({ length: 30 }, (_, i) => `// Line ${i + 1}`).join('\n');
|
|
500
500
|
const desc = await testFile('test.ts', lines + '\n\nexport function foo() {}');
|
|
501
501
|
const descLines = desc?.split('\n') ?? [];
|
|
502
|
-
//
|
|
503
|
-
expect(descLines.length).toBe(
|
|
504
|
-
expect(descLines[
|
|
502
|
+
// 20 content lines + 1 truncation indicator
|
|
503
|
+
expect(descLines.length).toBe(21);
|
|
504
|
+
expect(descLines[20]).toBe('... and 10 more lines');
|
|
505
505
|
});
|
|
506
506
|
test('empty comment returns undefined (no meaningful description)', async () => {
|
|
507
507
|
const desc = await testFile('test.ts', `//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marker.test.js","sourceRoot":"","sources":["../../src/extract/marker.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,UAAU,EAAE,CAAA;AACpB,CAAC,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAA;AAEvD,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,OAAe;IACvD,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACzC,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IACtD,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACxC,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;CAG1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,6BAA6B,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;CAK1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;;CAItC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;CAG1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,4BAA4B,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;CAM1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;CAM1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;CAC1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;CAG1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE;;;CAG3C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE;;;CAG3C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;CAO1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;CAO1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;CAI1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;CAK1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;CAK1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;KAGlC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE;;;CAG3C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;CAI1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;CAI1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;CAG1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,KAAK;AACL,+EAA+E;AAE/E,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IAClB,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;CAM1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;CAM1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,4CAA4C;AAC5C,+EAA+E;AAE/E,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;CAK1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE;;;;;CAK3C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;CAI1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;CAI1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,wCAAwC,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;CAG1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;CAO1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;CAM1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;;CAItC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;CAI1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;KAGlC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE;;;;;CAK3C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;KAGlC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;;;;;CAW1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;;;;;;CAY1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,mCAAmC,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;CAM1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;;CAQ1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,iCAAiC,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;;;;CAU1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;CAM1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,iCAAiC,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;;CAQ1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;;;;CAO1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;;CAI1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;CAGtC,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;CAG1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE;CAC3C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,8BAA8B,CAAC,CAAA;QAC9E,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACzC,4CAA4C;QAC5C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE;;;CAG1C,CAAC,CAAA;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"marker.test.js","sourceRoot":"","sources":["../../src/extract/marker.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SubmoduleInfo } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Get all submodule info for a repository.
|
|
4
|
+
* Combines detection, status, branches, URLs, and dirty state.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getSubmodules(dir: string): SubmoduleInfo[];
|
|
7
|
+
/**
|
|
8
|
+
* Get the set of submodule paths for filtering from diff output.
|
|
9
|
+
* Lightweight version that only detects paths without full info.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getSubmodulePaths(dir: string): Set<string>;
|
|
12
|
+
//# sourceMappingURL=submodules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submodules.d.ts","sourceRoot":"","sources":["../../src/extract/submodules.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AA0NhD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAgC1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAE1D"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
// Detect git submodules, their branches, and dirty state.
|
|
2
|
+
// Uses multiple git commands with safeExec for cross-platform reliability.
|
|
3
|
+
import { execSync } from 'child_process';
|
|
4
|
+
import { existsSync } from 'fs';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
/**
|
|
7
|
+
* Safely execute a git command, returning empty string on any error
|
|
8
|
+
*/
|
|
9
|
+
function safeExec(cmd, dir) {
|
|
10
|
+
try {
|
|
11
|
+
return execSync(cmd, {
|
|
12
|
+
cwd: dir,
|
|
13
|
+
encoding: 'utf8',
|
|
14
|
+
maxBuffer: 1024 * 1024 * 10, // 10MB
|
|
15
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return '';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Detect submodule paths by looking for gitlink entries (mode 160000) in git ls-files --stage.
|
|
24
|
+
* This is the most reliable method - works even if submodules are not initialized.
|
|
25
|
+
*/
|
|
26
|
+
function detectSubmodulePaths(dir) {
|
|
27
|
+
const output = safeExec('git ls-files --stage', dir);
|
|
28
|
+
const paths = new Set();
|
|
29
|
+
if (!output.trim())
|
|
30
|
+
return paths;
|
|
31
|
+
for (const line of output.split('\n')) {
|
|
32
|
+
if (!line.trim())
|
|
33
|
+
continue;
|
|
34
|
+
// Format: <mode> <hash> <stage>\t<path>
|
|
35
|
+
// Submodules have mode 160000
|
|
36
|
+
if (line.startsWith('160000 ')) {
|
|
37
|
+
const tabIdx = line.indexOf('\t');
|
|
38
|
+
if (tabIdx !== -1) {
|
|
39
|
+
paths.add(line.slice(tabIdx + 1).trim());
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return paths;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse `git submodule status --recursive` output.
|
|
47
|
+
* Format: " <sha> <path> (<describe>)" or "-<sha> <path>" (uninitialized) or "+<sha> <path> (<describe>)" (out of sync)
|
|
48
|
+
*/
|
|
49
|
+
function parseSubmoduleStatus(dir) {
|
|
50
|
+
const output = safeExec('git submodule status --recursive', dir);
|
|
51
|
+
const result = new Map();
|
|
52
|
+
if (!output.trim())
|
|
53
|
+
return result;
|
|
54
|
+
for (const line of output.split('\n')) {
|
|
55
|
+
if (!line.trim())
|
|
56
|
+
continue;
|
|
57
|
+
// First char: ' ' = OK, '-' = uninitialized, '+' = out of sync, 'U' = merge conflict
|
|
58
|
+
const prefix = line[0];
|
|
59
|
+
const initialized = prefix !== '-';
|
|
60
|
+
// Rest: <sha> <path> [(<describe>)]
|
|
61
|
+
const rest = line.slice(1).trim();
|
|
62
|
+
const spaceIdx = rest.indexOf(' ');
|
|
63
|
+
if (spaceIdx === -1)
|
|
64
|
+
continue;
|
|
65
|
+
const commit = rest.slice(0, spaceIdx);
|
|
66
|
+
let path = rest.slice(spaceIdx + 1);
|
|
67
|
+
// Remove optional describe suffix: " (v1.2.3)" or " (heads/main)"
|
|
68
|
+
const parenIdx = path.lastIndexOf(' (');
|
|
69
|
+
if (parenIdx !== -1) {
|
|
70
|
+
path = path.slice(0, parenIdx);
|
|
71
|
+
}
|
|
72
|
+
result.set(path.trim(), {
|
|
73
|
+
commit: commit.slice(0, 7), // short SHA
|
|
74
|
+
initialized,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the checked-out branch for each initialized submodule.
|
|
81
|
+
* Returns a map of submodule path -> branch name (or undefined for detached HEAD).
|
|
82
|
+
*/
|
|
83
|
+
function getSubmoduleBranches(dir) {
|
|
84
|
+
// Use foreach to run git symbolic-ref in each submodule
|
|
85
|
+
const output = safeExec('git submodule foreach --quiet --recursive \'echo "$sm_path|$(git symbolic-ref --short -q HEAD 2>/dev/null || echo __detached__)"\'', dir);
|
|
86
|
+
const result = new Map();
|
|
87
|
+
if (!output.trim())
|
|
88
|
+
return result;
|
|
89
|
+
for (const line of output.split('\n')) {
|
|
90
|
+
if (!line.trim())
|
|
91
|
+
continue;
|
|
92
|
+
const pipeIdx = line.indexOf('|');
|
|
93
|
+
if (pipeIdx === -1)
|
|
94
|
+
continue;
|
|
95
|
+
const path = line.slice(0, pipeIdx).trim();
|
|
96
|
+
const branch = line.slice(pipeIdx + 1).trim();
|
|
97
|
+
result.set(path, branch === '__detached__' || branch === '' ? undefined : branch);
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get submodule URLs from .gitmodules config.
|
|
103
|
+
* Returns a map of submodule path -> URL.
|
|
104
|
+
*/
|
|
105
|
+
function getSubmoduleUrls(dir) {
|
|
106
|
+
// Check if .gitmodules exists first
|
|
107
|
+
if (!existsSync(join(dir, '.gitmodules'))) {
|
|
108
|
+
return new Map();
|
|
109
|
+
}
|
|
110
|
+
const output = safeExec('git config -f .gitmodules --get-regexp "^submodule\\..*\\.url$"', dir);
|
|
111
|
+
const pathOutput = safeExec('git config -f .gitmodules --get-regexp "^submodule\\..*\\.path$"', dir);
|
|
112
|
+
// Build name -> url map
|
|
113
|
+
const nameToUrl = new Map();
|
|
114
|
+
for (const line of output.split('\n')) {
|
|
115
|
+
if (!line.trim())
|
|
116
|
+
continue;
|
|
117
|
+
// Format: submodule.<name>.url <url>
|
|
118
|
+
const match = line.match(/^submodule\.(.+)\.url\s+(.+)$/);
|
|
119
|
+
if (match) {
|
|
120
|
+
nameToUrl.set(match[1], match[2].trim());
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Build path -> url map via name -> path mapping
|
|
124
|
+
const result = new Map();
|
|
125
|
+
for (const line of pathOutput.split('\n')) {
|
|
126
|
+
if (!line.trim())
|
|
127
|
+
continue;
|
|
128
|
+
// Format: submodule.<name>.path <path>
|
|
129
|
+
const match = line.match(/^submodule\.(.+)\.path\s+(.+)$/);
|
|
130
|
+
if (match) {
|
|
131
|
+
const name = match[1];
|
|
132
|
+
const path = match[2].trim();
|
|
133
|
+
const url = nameToUrl.get(name);
|
|
134
|
+
if (url) {
|
|
135
|
+
result.set(path, url);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Check which submodules have dirty working trees.
|
|
143
|
+
* Uses git status --porcelain=2 to detect modified submodule content.
|
|
144
|
+
*
|
|
145
|
+
* Porcelain v2 "changed entry" format (type 1):
|
|
146
|
+
* 1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <path>
|
|
147
|
+
* Fields are space-separated but the path (field 9) may contain spaces,
|
|
148
|
+
* so we split on the first 8 spaces and take the remainder as the path.
|
|
149
|
+
*/
|
|
150
|
+
function getDirtySubmodules(dir, submodulePaths) {
|
|
151
|
+
if (submodulePaths.size === 0)
|
|
152
|
+
return new Set();
|
|
153
|
+
const output = safeExec('git status --porcelain=2', dir);
|
|
154
|
+
const dirty = new Set();
|
|
155
|
+
if (!output.trim())
|
|
156
|
+
return dirty;
|
|
157
|
+
for (const line of output.split('\n')) {
|
|
158
|
+
if (!line.trim())
|
|
159
|
+
continue;
|
|
160
|
+
if (line.startsWith('1 ') || line.startsWith('2 ')) {
|
|
161
|
+
// Split only the first 8 spaces to preserve path with spaces
|
|
162
|
+
const fields = splitNFields(line, 9);
|
|
163
|
+
if (fields.length < 9)
|
|
164
|
+
continue;
|
|
165
|
+
// fields[2] is the sub field (N... for non-submodule, S... for submodule)
|
|
166
|
+
const subField = fields[2];
|
|
167
|
+
// fields[8] is the full path (may contain spaces)
|
|
168
|
+
const path = fields[8];
|
|
169
|
+
if (subField && subField.startsWith('S') && subField !== 'S...' && submodulePaths.has(path)) {
|
|
170
|
+
dirty.add(path);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return dirty;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Split a string into exactly N fields by spaces.
|
|
178
|
+
* The last field gets the remainder (preserving spaces in paths).
|
|
179
|
+
*/
|
|
180
|
+
function splitNFields(str, n) {
|
|
181
|
+
const fields = [];
|
|
182
|
+
let pos = 0;
|
|
183
|
+
for (let i = 0; i < n - 1 && pos < str.length; i++) {
|
|
184
|
+
const spaceIdx = str.indexOf(' ', pos);
|
|
185
|
+
if (spaceIdx === -1)
|
|
186
|
+
break;
|
|
187
|
+
fields.push(str.slice(pos, spaceIdx));
|
|
188
|
+
pos = spaceIdx + 1;
|
|
189
|
+
}
|
|
190
|
+
if (pos < str.length) {
|
|
191
|
+
fields.push(str.slice(pos));
|
|
192
|
+
}
|
|
193
|
+
return fields;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get all submodule info for a repository.
|
|
197
|
+
* Combines detection, status, branches, URLs, and dirty state.
|
|
198
|
+
*/
|
|
199
|
+
export function getSubmodules(dir) {
|
|
200
|
+
// Step 1: Detect all submodule paths (works even if uninitialized)
|
|
201
|
+
const submodulePaths = detectSubmodulePaths(dir);
|
|
202
|
+
if (submodulePaths.size === 0)
|
|
203
|
+
return [];
|
|
204
|
+
// Step 2: Get status (commit SHAs and initialized state)
|
|
205
|
+
const statusMap = parseSubmoduleStatus(dir);
|
|
206
|
+
// Step 3: Get branches for initialized submodules
|
|
207
|
+
const branchMap = getSubmoduleBranches(dir);
|
|
208
|
+
// Step 4: Get URLs from .gitmodules
|
|
209
|
+
const urlMap = getSubmoduleUrls(dir);
|
|
210
|
+
// Step 5: Check dirty state
|
|
211
|
+
const dirtySet = getDirtySubmodules(dir, submodulePaths);
|
|
212
|
+
// Combine all info
|
|
213
|
+
const submodules = [];
|
|
214
|
+
for (const path of submodulePaths) {
|
|
215
|
+
const status = statusMap.get(path);
|
|
216
|
+
submodules.push({
|
|
217
|
+
path,
|
|
218
|
+
commit: status?.commit ?? 'unknown',
|
|
219
|
+
branch: branchMap.get(path),
|
|
220
|
+
url: urlMap.get(path),
|
|
221
|
+
dirty: dirtySet.has(path),
|
|
222
|
+
initialized: status?.initialized ?? false,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
return submodules;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get the set of submodule paths for filtering from diff output.
|
|
229
|
+
* Lightweight version that only detects paths without full info.
|
|
230
|
+
*/
|
|
231
|
+
export function getSubmodulePaths(dir) {
|
|
232
|
+
return detectSubmodulePaths(dir);
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=submodules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submodules.js","sourceRoot":"","sources":["../../src/extract/submodules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submodules.test.d.ts","sourceRoot":"","sources":["../../src/extract/submodules.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Tests for submodule detection and parsing logic.
|
|
2
|
+
import { describe, expect, test } from 'bun:test';
|
|
3
|
+
import { getSubmodules, getSubmodulePaths } from './submodules.js';
|
|
4
|
+
import { getAllDiffData, parseNumstat, parseDiff } from './git-status.js';
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Integration: submodule detection in current repo (no submodules expected)
|
|
7
|
+
// ============================================================================
|
|
8
|
+
describe('getSubmodules', () => {
|
|
9
|
+
test('returns empty array when repo has no submodules', () => {
|
|
10
|
+
const result = getSubmodules(process.cwd());
|
|
11
|
+
expect(result).toMatchInlineSnapshot(`[]`);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
describe('getSubmodulePaths', () => {
|
|
15
|
+
test('returns empty set when repo has no submodules', () => {
|
|
16
|
+
const result = getSubmodulePaths(process.cwd());
|
|
17
|
+
expect(result.size).toBe(0);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Diff filtering: submodule paths should be removed from diff output
|
|
22
|
+
// ============================================================================
|
|
23
|
+
describe('diff submodule filtering', () => {
|
|
24
|
+
test('parseNumstat includes submodule pointer changes as 1/1', () => {
|
|
25
|
+
// Simulates what git diff --numstat outputs for a submodule pointer change
|
|
26
|
+
const output = `1\t1\tvendor/some-lib
|
|
27
|
+
10\t5\tsrc/main.ts`;
|
|
28
|
+
const result = parseNumstat(output);
|
|
29
|
+
// Without filtering, the submodule shows as 1 added / 1 deleted
|
|
30
|
+
expect(result.size).toBe(2);
|
|
31
|
+
expect(result.get('vendor/some-lib')).toMatchInlineSnapshot(`
|
|
32
|
+
{
|
|
33
|
+
"added": 1,
|
|
34
|
+
"deleted": 1,
|
|
35
|
+
}
|
|
36
|
+
`);
|
|
37
|
+
});
|
|
38
|
+
test('getAllDiffData filters out submodule paths', () => {
|
|
39
|
+
const submodulePaths = new Set(['vendor/some-lib', 'external/utils']);
|
|
40
|
+
// This tests the filtering logic with real git commands on the current repo.
|
|
41
|
+
// Since this repo has no submodules, the filter set won't match anything,
|
|
42
|
+
// but we verify the function accepts the parameter without error.
|
|
43
|
+
const result = getAllDiffData(process.cwd(), submodulePaths);
|
|
44
|
+
expect(result.fileStats).toBeDefined();
|
|
45
|
+
expect(result.fileDiffs).toBeDefined();
|
|
46
|
+
// Verify submodule paths are not in the results
|
|
47
|
+
expect(result.fileStats.has('vendor/some-lib')).toBe(false);
|
|
48
|
+
expect(result.fileDiffs.has('vendor/some-lib')).toBe(false);
|
|
49
|
+
});
|
|
50
|
+
test('parseDiff handles submodule pseudo-diff gracefully', () => {
|
|
51
|
+
// Git produces this pseudo-diff for submodule pointer changes
|
|
52
|
+
const diffOutput = `diff --git a/vendor/lib b/vendor/lib
|
|
53
|
+
index abc1234..def5678 160000
|
|
54
|
+
--- a/vendor/lib
|
|
55
|
+
+++ b/vendor/lib
|
|
56
|
+
@@ -1 +1 @@
|
|
57
|
+
-Subproject commit abc1234567890abcdef1234567890abcdef123456
|
|
58
|
+
+Subproject commit def5678901234567890abcdef1234567890abcdef`;
|
|
59
|
+
const result = parseDiff(diffOutput);
|
|
60
|
+
// Parser will extract a hunk but it's meaningless for submodules.
|
|
61
|
+
// The important thing is it doesn't crash.
|
|
62
|
+
expect(result.has('vendor/lib')).toBe(true);
|
|
63
|
+
// In practice, getAllDiffData filters this out via submodulePaths
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// Builder: submodule entry formatting (tested via types)
|
|
68
|
+
// ============================================================================
|
|
69
|
+
describe('SubmoduleEntry format', () => {
|
|
70
|
+
test('formats initialized submodule with branch', () => {
|
|
71
|
+
// This tests the format that builder.ts produces
|
|
72
|
+
const label = 'main @ a1b2c3d';
|
|
73
|
+
expect(label).toMatchInlineSnapshot(`"main @ a1b2c3d"`);
|
|
74
|
+
});
|
|
75
|
+
test('formats detached HEAD submodule', () => {
|
|
76
|
+
const label = 'detached @ f4e5d6c';
|
|
77
|
+
expect(label).toMatchInlineSnapshot(`"detached @ f4e5d6c"`);
|
|
78
|
+
});
|
|
79
|
+
test('formats uninitialized submodule', () => {
|
|
80
|
+
const label = 'uninitialized @ abc1234';
|
|
81
|
+
expect(label).toMatchInlineSnapshot(`"uninitialized @ abc1234"`);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=submodules.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submodules.test.js","sourceRoot":"","sources":["../../src/extract/submodules.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { GenerateOptions, MapNode } from './types.js';
|
|
2
2
|
export { toYaml } from './map/yaml.js';
|
|
3
3
|
export { truncateMap, truncateDefs } from './map/truncate.js';
|
|
4
|
-
export type {
|
|
4
|
+
export type { TruncateOptions } from './map/truncate.js';
|
|
5
|
+
export { createConsoleLogger, createNoopLogger, formatLogMessage } from './logger.js';
|
|
6
|
+
export type { Logger } from './logger.js';
|
|
7
|
+
export type { DefEntry, Definition, DefinitionDiff, DefinitionStatus, DiffHunk, FileDiffStats, FileEntry, FileDiff, FileResult, GenerateOptions, Language, MapNode, MarkerResult, SubmoduleEntry, SubmoduleInfo, SubmoduleNode, } from './types.js';
|
|
5
8
|
/**
|
|
6
9
|
* Check if directory is inside a git repository
|
|
7
10
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACrF,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,YAAY,EACV,QAAQ,EACR,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIpD;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAejF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBpF"}
|