未验证 提交 99317fc6 编写于 作者: A Asher 提交者: GitHub

Merge pull request #3309 from code-asher/create-dirs

...@@ -24,7 +24,7 @@ import { isWindows } from 'vs/base/common/platform'; ...@@ -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 { ...@@ -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 `.`
......
import * as fs from 'fs'; import { promises as fs } from 'fs';
import * as net from 'net'; import * as net from 'net';
import { hostname, release } from 'os'; import { hostname, release } from 'os';
import * as path from 'path'; import * as path from 'path';
...@@ -213,8 +213,18 @@ export class Vscode { ...@@ -213,8 +213,18 @@ export class Vscode {
private async initializeServices(args: NativeParsedArgs): Promise<void> { private async initializeServices(args: NativeParsedArgs): Promise<void> {
const productService = { _serviceBrand: undefined, ...product }; const productService = { _serviceBrand: undefined, ...product };
const environmentService = new NativeEnvironmentService(args, productService); const environmentService = new NativeEnvironmentService(args, productService);
// https://github.com/cdr/code-server/issues/1693
fs.mkdirSync(environmentService.globalStorageHome.fsPath, { recursive: true }); await Promise.all([
environmentService.extensionsPath,
environmentService.logsPath,
environmentService.globalStorageHome.fsPath,
environmentService.workspaceStorageHome.fsPath,
...environmentService.extraExtensionPaths,
...environmentService.extraBuiltinExtensionPaths,
].map((p) => fs.mkdir(p, { recursive: true }).catch((error) => {
logger.warn(error.message || error);
})));
const logService = new MultiplexLogService([ const logService = new MultiplexLogService([
new ConsoleLogger(getLogLevel(environmentService)), new ConsoleLogger(getLogLevel(environmentService)),
new SpdLogLogger(RemoteExtensionLogFileName, path.join(environmentService.logsPath, `${RemoteExtensionLogFileName}.log`), false, getLogLevel(environmentService)) new SpdLogLogger(RemoteExtensionLogFileName, path.join(environmentService.logsPath, `${RemoteExtensionLogFileName}.log`), false, getLogLevel(environmentService))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册