Skip to content

Commit 99317fc

Browse files
authored
Merge pull request #3309 from code-asher/create-dirs
2 parents e7ce4f8 + 51d294e commit 99317fc

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

lib/vscode/src/vs/platform/extensionManagement/node/extensionsScanner.ts

+4-15
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import { isWindows } from 'vs/base/common/platform';
2424
import { flatten } from 'vs/base/common/arrays';
2525
import { IStringDictionary } from 'vs/base/common/collections';
2626
import { FileAccess } from 'vs/base/common/network';
27-
import { FileOperationError, FileOperationResult, IFileService } from 'vs/platform/files/common/files';
27+
import { IFileService } from 'vs/platform/files/common/files';
2828
import { basename } from 'vs/base/common/resources';
2929
import { generateUuid } from 'vs/base/common/uuid';
3030
import { getErrorMessage } from 'vs/base/common/errors';
@@ -274,22 +274,11 @@ export class ExtensionsScanner extends Disposable {
274274
return [...systemExtensions, ...devSystemExtensions];
275275
}
276276

277+
277278
private async scanExtensionsInDir(dir: string, type: ExtensionType): Promise<ILocalExtension[]> {
278279
const limiter = new Limiter<any>(10);
279-
/*
280-
* NOTE@coder: use fileService.resolve() like upstream does,
281-
* but simply ignore directories that do not exist. (upstream does not)
282-
*
283-
* Used to (<1.54) use pfs.readdir.
284-
*/
285-
const stat = await this.fileService.resolve(URI.file(dir))
286-
.catch((error) => {
287-
if (!(error instanceof FileOperationError && error.fileOperationResult === FileOperationResult.FILE_NOT_FOUND)) {
288-
throw error;
289-
}
290-
return undefined;
291-
});
292-
if (stat && stat.children) {
280+
const stat = await this.fileService.resolve(URI.file(dir));
281+
if (stat.children) {
293282
const extensions = await Promise.all<ILocalExtension>(stat.children.filter(c => c.isDirectory)
294283
.map(c => limiter.queue(async () => {
295284
if (type === ExtensionType.User && basename(c.resource).indexOf('.') === 0) { // Do not consider user extension folder starting with `.`

lib/vscode/src/vs/server/node/server.ts

+13-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as fs from 'fs';
1+
import { promises as fs } from 'fs';
22
import * as net from 'net';
33
import { hostname, release } from 'os';
44
import * as path from 'path';
@@ -213,8 +213,18 @@ export class Vscode {
213213
private async initializeServices(args: NativeParsedArgs): Promise<void> {
214214
const productService = { _serviceBrand: undefined, ...product };
215215
const environmentService = new NativeEnvironmentService(args, productService);
216-
// https://github.com/cdr/code-server/issues/1693
217-
fs.mkdirSync(environmentService.globalStorageHome.fsPath, { recursive: true });
216+
217+
await Promise.all([
218+
environmentService.extensionsPath,
219+
environmentService.logsPath,
220+
environmentService.globalStorageHome.fsPath,
221+
environmentService.workspaceStorageHome.fsPath,
222+
...environmentService.extraExtensionPaths,
223+
...environmentService.extraBuiltinExtensionPaths,
224+
].map((p) => fs.mkdir(p, { recursive: true }).catch((error) => {
225+
logger.warn(error.message || error);
226+
})));
227+
218228
const logService = new MultiplexLogService([
219229
new ConsoleLogger(getLogLevel(environmentService)),
220230
new SpdLogLogger(RemoteExtensionLogFileName, path.join(environmentService.logsPath, `${RemoteExtensionLogFileName}.log`), false, getLogLevel(environmentService))

0 commit comments

Comments
 (0)