mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
fix(tools): Handle special characters in file paths for glob and read_many_files (#6507)
Co-authored-by: Jacob Richman <jacob314@gmail.com>
This commit is contained in:
@@ -13,8 +13,9 @@ import {
|
||||
} from './tools.js';
|
||||
import { SchemaValidator } from '../utils/schemaValidator.js';
|
||||
import { getErrorMessage } from '../utils/errors.js';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import { glob } from 'glob';
|
||||
import { glob, escape } from 'glob';
|
||||
import { getCurrentGeminiMdFilename } from './memoryTool.js';
|
||||
import {
|
||||
detectFileType,
|
||||
@@ -245,18 +246,27 @@ ${finalExclusionPatternsForDescription
|
||||
const workspaceDirs = this.config.getWorkspaceContext().getDirectories();
|
||||
|
||||
for (const dir of workspaceDirs) {
|
||||
const entriesInDir = await glob(
|
||||
searchPatterns.map((p) => p.replace(/\\/g, '/')),
|
||||
{
|
||||
cwd: dir,
|
||||
ignore: effectiveExcludes,
|
||||
nodir: true,
|
||||
dot: true,
|
||||
absolute: true,
|
||||
nocase: true,
|
||||
signal,
|
||||
},
|
||||
);
|
||||
const processedPatterns = [];
|
||||
for (const p of searchPatterns) {
|
||||
const normalizedP = p.replace(/\\/g, '/');
|
||||
const fullPath = path.join(dir, normalizedP);
|
||||
if (fs.existsSync(fullPath)) {
|
||||
processedPatterns.push(escape(normalizedP));
|
||||
} else {
|
||||
// The path does not exist or is not a file, so we treat it as a glob pattern.
|
||||
processedPatterns.push(normalizedP);
|
||||
}
|
||||
}
|
||||
|
||||
const entriesInDir = await glob(processedPatterns, {
|
||||
cwd: dir,
|
||||
ignore: effectiveExcludes,
|
||||
nodir: true,
|
||||
dot: true,
|
||||
absolute: true,
|
||||
nocase: true,
|
||||
signal,
|
||||
});
|
||||
for (const entry of entriesInDir) {
|
||||
allEntries.add(entry);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user