Skip to content

Commit e80c93a

Browse files
committed
feat: ignore some errors on 'file' source
1 parent 809694d commit e80c93a

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

builtin/source/file.ts

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -71,32 +71,39 @@ async function* walk(
7171
filterDirectory: (path: string) => boolean,
7272
signal?: AbortSignal,
7373
): AsyncIterableIterator<string> {
74-
for await (const entry of Deno.readDir(root)) {
75-
const path = `${root}${SEPARATOR}${entry.name}`;
76-
// Follow symbolic links to recursively yield files
77-
let isDirectory = entry.isDirectory;
78-
if (entry.isSymlink) {
79-
try {
80-
const fileInfo = await Deno.stat(path);
81-
signal?.throwIfAborted();
82-
isDirectory = fileInfo.isDirectory;
83-
} catch (err) {
84-
if (isSilence(err)) {
85-
continue;
74+
try {
75+
for await (const entry of Deno.readDir(root)) {
76+
const path = `${root}${SEPARATOR}${entry.name}`;
77+
// Follow symbolic links to recursively yield files
78+
let isDirectory = entry.isDirectory;
79+
if (entry.isSymlink) {
80+
try {
81+
const fileInfo = await Deno.stat(path);
82+
signal?.throwIfAborted();
83+
isDirectory = fileInfo.isDirectory;
84+
} catch (err) {
85+
if (isSilence(err)) {
86+
continue;
87+
}
88+
throw err;
8689
}
87-
throw err;
8890
}
89-
}
90-
// Recursively yield files from directories, or yield file details
91-
if (isDirectory) {
92-
if (filterDirectory(path)) {
93-
yield* walk(path, filterFile, filterDirectory, signal);
94-
}
95-
} else {
96-
if (filterFile(path)) {
97-
yield path;
91+
// Recursively yield files from directories, or yield file details
92+
if (isDirectory) {
93+
if (filterDirectory(path)) {
94+
yield* walk(path, filterFile, filterDirectory, signal);
95+
}
96+
} else {
97+
if (filterFile(path)) {
98+
yield path;
99+
}
98100
}
99101
}
102+
} catch (err) {
103+
if (isSilence(err)) {
104+
return;
105+
}
106+
throw err;
100107
}
101108
}
102109

0 commit comments

Comments
 (0)