fix(rtk/find): detect and group Windows backslash-style find output (#2448)
isPathLike rejected any line with a colon, so Windows absolute paths (C:\Users\me\a.js) were never recognized and find dumps went uncompacted. find.js also split only on "/", mis-grouping backslash paths. - autodetect: treat drive-letter prefix (X:\ or X:/) as path-like before the general colon rejection. - find.js: split on the last "/" or "\" separator and normalize emitted directory labels to forward slashes. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
0c55d49ab6
commit
d75471bbbc
3 files changed
+74
-5
No files matched your search
@@ -9,16 +9,17 @@ export function find(input) {
|
||||
const byDir = new Map();
|
||||
|
||||
for (const path of lines) {
|
||||
const lastSlash = path.lastIndexOf("/");
|
||||
// Accept both Unix ("/a/b") and Windows ("C:\a\b") separators
|
||||
const lastSep = Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\"));
|
||||
let dir;
|
||||
let basename;
|
||||
if (lastSlash === -1) {
|
||||
if (lastSep === -1) {
|
||||
dir = ".";
|
||||
basename = path;
|
||||
} else {
|
||||
// Rust: PathBuf::from(path).parent().display() + file_name().display()
|
||||
dir = path.slice(0, lastSlash) || "/";
|
||||
basename = path.slice(lastSlash + 1);
|
||||
dir = path.slice(0, lastSep) || "/";
|
||||
basename = path.slice(lastSep + 1);
|
||||
}
|
||||
if (!byDir.has(dir)) byDir.set(dir, []);
|
||||
byDir.get(dir).push(basename);
|
||||
@@ -31,7 +32,8 @@ export function find(input) {
|
||||
const showDirs = dirs.slice(0, FIND_TOTAL_DIR_MAX);
|
||||
for (const dir of showDirs) {
|
||||
const files = byDir.get(dir);
|
||||
out += `${dir}/ (${files.length})\n`;
|
||||
const dirLabel = dir.replace(/\\/g, "/");
|
||||
out += `${dirLabel}/ (${files.length})\n`;
|
||||
const showFiles = files.slice(0, FIND_PER_DIR_MAX);
|
||||
for (const f of showFiles) out += ` ${f}\n`;
|
||||
if (files.length > FIND_PER_DIR_MAX) {
|
||||
|
||||
Reference in new issue
Block a user