Remove extension dir scan catch

Now that we are creating the directories these shouldn't error. If they
are somehow missing (if the user deletes them after VS Code starts for
example) then I think we should surface that to the user.
This commit is contained in:
Asher 2021-05-07 11:43:19 -05:00
parent 9ff29d17fb
commit 51d294e163
No known key found for this signature in database
GPG Key ID: D63C1EF81242354A

View File

@ -24,7 +24,7 @@ import { isWindows } from 'vs/base/common/platform';
import { flatten } from 'vs/base/common/arrays'; import { flatten } from 'vs/base/common/arrays';
import { IStringDictionary } from 'vs/base/common/collections'; import { IStringDictionary } from 'vs/base/common/collections';
import { FileAccess } from 'vs/base/common/network'; import { FileAccess } from 'vs/base/common/network';
import { FileOperationError, FileOperationResult, IFileService } from 'vs/platform/files/common/files'; import { IFileService } from 'vs/platform/files/common/files';
import { basename } from 'vs/base/common/resources'; import { basename } from 'vs/base/common/resources';
import { generateUuid } from 'vs/base/common/uuid'; import { generateUuid } from 'vs/base/common/uuid';
import { getErrorMessage } from 'vs/base/common/errors'; import { getErrorMessage } from 'vs/base/common/errors';
@ -274,22 +274,11 @@ export class ExtensionsScanner extends Disposable {
return [...systemExtensions, ...devSystemExtensions]; return [...systemExtensions, ...devSystemExtensions];
} }
private async scanExtensionsInDir(dir: string, type: ExtensionType): Promise<ILocalExtension[]> { private async scanExtensionsInDir(dir: string, type: ExtensionType): Promise<ILocalExtension[]> {
const limiter = new Limiter<any>(10); const limiter = new Limiter<any>(10);
/* const stat = await this.fileService.resolve(URI.file(dir));
* NOTE@coder: use fileService.resolve() like upstream does, if (stat.children) {
* but simply ignore directories that do not exist. (upstream does not)
*
* Used to (<1.54) use pfs.readdir.
*/
const stat = await this.fileService.resolve(URI.file(dir))
.catch((error) => {
if (!(error instanceof FileOperationError && error.fileOperationResult === FileOperationResult.FILE_NOT_FOUND)) {
throw error;
}
return undefined;
});
if (stat && stat.children) {
const extensions = await Promise.all<ILocalExtension>(stat.children.filter(c => c.isDirectory) const extensions = await Promise.all<ILocalExtension>(stat.children.filter(c => c.isDirectory)
.map(c => limiter.queue(async () => { .map(c => limiter.queue(async () => {
if (type === ExtensionType.User && basename(c.resource).indexOf('.') === 0) { // Do not consider user extension folder starting with `.` if (type === ExtensionType.User && basename(c.resource).indexOf('.') === 0) { // Do not consider user extension folder starting with `.`