fix(tools): address PR review feedback from cubic
- Use tool.schema.enum() for output_mode instead of generic string() - Remove unsafe type assertion for output_mode - Fix files_with_matches mode returning empty results by adding filesOnly flag to parseOutput for --files-with-matches rg output
This commit is contained in:
+12
-2
@@ -95,7 +95,7 @@ function buildArgs(options: GrepOptions, backend: GrepBackend): string[] {
|
||||
return backend === "rg" ? buildRgArgs(options) : buildGrepArgs(options)
|
||||
}
|
||||
|
||||
function parseOutput(output: string): GrepMatch[] {
|
||||
function parseOutput(output: string, filesOnly = false): GrepMatch[] {
|
||||
if (!output.trim()) return []
|
||||
|
||||
const matches: GrepMatch[] = []
|
||||
@@ -104,6 +104,16 @@ function parseOutput(output: string): GrepMatch[] {
|
||||
for (const line of lines) {
|
||||
if (!line.trim()) continue
|
||||
|
||||
if (filesOnly) {
|
||||
// --files-with-matches outputs only file paths, one per line
|
||||
matches.push({
|
||||
file: line.trim(),
|
||||
line: 0,
|
||||
text: "",
|
||||
})
|
||||
continue
|
||||
}
|
||||
|
||||
const match = line.match(/^(.+?):(\d+):(.*)$/)
|
||||
if (match) {
|
||||
matches.push({
|
||||
@@ -191,7 +201,7 @@ async function runRgInternal(options: GrepOptions): Promise<GrepResult> {
|
||||
}
|
||||
}
|
||||
|
||||
const matches = parseOutput(outputToProcess)
|
||||
const matches = parseOutput(outputToProcess, options.outputMode === "files_with_matches")
|
||||
const limited = options.headLimit && options.headLimit > 0
|
||||
? matches.slice(0, options.headLimit)
|
||||
: matches
|
||||
|
||||
Reference in New Issue
Block a user