Merge pull request #3309 from code-asher/create-dirs
This commit is contained in:
commit
99317fc622
@ -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 `.`
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
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 {
|
|||||||
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))
|
||||||
|
Reference in New Issue
Block a user