fix(glob): use cwd-relative search for ripgrep to fix directory prefix patterns
Ripgrep's --glob flag silently returns zero results when the search target is an absolute path and the pattern contains directory prefixes (e.g. 'apps/backend/**/*.ts' with '/project'). This is a known ripgrep behavior where glob matching fails against paths rooted at absolute arguments. Fix by running ripgrep with cwd set to the search path and '.' as the search target, matching how the find backend already operates. Ripgrep then sees relative paths internally, so directory-prefixed globs match correctly. Output paths are resolved back to absolute via resolve().
This commit is contained in:
parent
29d606241b
commit
418cf8529f
@ -1,3 +1,4 @@
|
||||
import { resolve } from "node:path"
|
||||
import { spawn } from "bun"
|
||||
import {
|
||||
resolveGrepCli,
|
||||
@ -119,10 +120,9 @@ async function runRgFilesInternal(
|
||||
|
||||
if (isRg) {
|
||||
const args = buildRgArgs(options)
|
||||
const paths = options.paths?.length ? options.paths : ["."]
|
||||
args.push(...paths)
|
||||
cwd = options.paths?.[0] || "."
|
||||
args.push(".")
|
||||
command = [cli.path, ...args]
|
||||
cwd = undefined
|
||||
} else if (isWindows) {
|
||||
command = buildPowerShellCommand(options)
|
||||
cwd = undefined
|
||||
@ -177,7 +177,7 @@ async function runRgFilesInternal(
|
||||
|
||||
let filePath: string
|
||||
if (isRg) {
|
||||
filePath = line
|
||||
filePath = cwd ? resolve(cwd, line) : line
|
||||
} else if (isWindows) {
|
||||
filePath = line.trim()
|
||||
} else {
|
||||
|
||||
@ -29,12 +29,11 @@ export function createGlobTools(ctx: PluginInput): Record<string, ToolDefinition
|
||||
const runtimeCtx = context as Record<string, unknown>
|
||||
const dir = typeof runtimeCtx.directory === "string" ? runtimeCtx.directory : ctx.directory
|
||||
const searchPath = args.path ? resolve(dir, args.path) : dir
|
||||
const paths = [searchPath]
|
||||
|
||||
const result = await runRgFiles(
|
||||
{
|
||||
pattern: args.pattern,
|
||||
paths,
|
||||
paths: [searchPath],
|
||||
},
|
||||
cli
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user