fix(lib/vscode): register LogLevelChannel

This commit is contained in:
Joe Previte 2021-03-15 14:27:37 -07:00
parent 050a1bb146
commit ae02023454
No known key found for this signature in database
GPG Key ID: 2C91590C6B742C24
4 changed files with 28 additions and 53 deletions

View File

@ -71,50 +71,6 @@
* @returns {object}
*/
function getLanguagePackConfigurations(userDataPath) {
const configFile = path.join(userDataPath, 'languagepacks.json');
try {
return nodeRequire(configFile);
} catch (err) {
// Do nothing. If we can't read the file we have no
// language pack config.
}
}
function readFile(file) {
return new Promise(function (resolve, reject) {
fs.readFile(file, 'utf8', function (err, data) {
if (err) {
reject(err);
return;
}
resolve(data);
});
});
}
/**
* @param {string} file
* @param {string} content
* @returns {Promise<void>}
*/
function writeFile(file, content) {
return new Promise(function (resolve, reject) {
fs.writeFile(file, content, 'utf8', function (err) {
if (err) {
reject(err);
return;
}
resolve();
});
});
}
/**
* @param {string} userDataPath
* @returns {object}
*/
function getLanguagePackConfigurations(userDataPath) {
const configFile = path.join(userDataPath, 'languagepacks.json');
try {
// NOTE@coder: Swapped require with readFile since require is cached and

View File

@ -330,6 +330,11 @@ export class ExtensionEnvironmentChannel implements IServerChannel {
}
}
/*
NOTE@coder:
Reference: - ../../workbench/api/common/extHostDebugService.ts
3/16/21 jsjoeio
*/
class VariableResolverService extends AbstractVariableResolverService {
constructor(
remoteAuthority: string,
@ -355,7 +360,7 @@ class VariableResolverService extends AbstractVariableResolverService {
NOTE@coder: not sure where we could get this from. This is new.
@jsjoeio 3/11/21
*/
return undefined;
return (args.resolverEnv && args.resolverEnv['VSCODE_CWD']) || env['VSCODE_CWD'] || process.cwd();
},
getExecPath: (): string | undefined => {
// Assuming that resolverEnv is just for use in the resolver and not for

View File

@ -29,7 +29,7 @@ import { ServiceCollection } from 'vs/platform/instantiation/common/serviceColle
import { ILocalizationsService } from 'vs/platform/localizations/common/localizations';
import { LocalizationsService } from 'vs/platform/localizations/node/localizations';
import { ConsoleLogger, getLogLevel, ILoggerService, ILogService, MultiplexLogService } from 'vs/platform/log/common/log';
import { LoggerChannel } from 'vs/platform/log/common/logIpc';
import { LogLevelChannel } from 'vs/platform/log/common/logIpc';
import { LoggerService } from 'vs/platform/log/node/loggerService';
import { SpdLogLogger } from 'vs/platform/log/node/spdlogLog';
import product from 'vs/platform/product/common/product';
@ -214,7 +214,7 @@ export class Vscode {
private async initializeServices(args: NativeParsedArgs): Promise<void> {
/*
NOTE@coder: this initializeServices is loosely based off this file:
https://github.com/cdr/code-server/blob/main/lib/vscode/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts#L148
Reference: - ../../electron-browser/sharedProcess/sharedProcessMain.ts#L148
If upstream changes cause conflicts, look there ^.
3/11/21 @jsjoeio
@ -224,7 +224,7 @@ export class Vscode {
fs.mkdirSync(environmentService.globalStorageHome.fsPath, { recursive: true });
/*
NOTE@coder: Made these updates on based on this file (and lines):
https://github.com/cdr/code-server/blob/main/lib/vscode/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts#L144-L149
Reference: - ../../electron-browser/sharedProcess/sharedProcessMain.ts#L144-L149
More details (from @code-asher):
I think the logLevel channel is only used in the electron version of vscode so we can probably skip it.
@ -234,7 +234,7 @@ export class Vscode {
*/
const logService = new MultiplexLogService([
new ConsoleLogger(getLogLevel(environmentService)),
new SpdLogLogger(RemoteExtensionLogFileName, path.join(environmentService.logsPath, 'server.log'), false, getLogLevel(environmentService))
new SpdLogLogger(RemoteExtensionLogFileName, path.join(environmentService.logsPath, `${RemoteExtensionLogFileName}.log`), false, getLogLevel(environmentService))
]);
const fileService = new FileService(logService);
fileService.registerProvider(Schemas.file, new DiskFileSystemProvider(logService));
@ -250,7 +250,13 @@ export class Vscode {
...environmentService.extraBuiltinExtensionPaths,
];
this.ipc.registerChannel('logger', new LoggerChannel(loggerService));
/*
NOTE@coder: we changed this channel registration from LogLevel to LogLevelChannel
because it changed upstream.
3/15/21 jsjoeio
*/
this.ipc.registerChannel('logger', new LogLevelChannel(logService));
this.ipc.registerChannel(ExtensionHostDebugBroadcastChannel.ChannelName, new ExtensionHostDebugBroadcastChannel());
this.services.set(ILogService, logService);

View File

@ -5,8 +5,8 @@
import { ProxyChannel } from 'vs/base/parts/ipc/common/ipc';
import { ILocalizationsService } from 'vs/platform/localizations/common/localizations';
import { ISharedProcessService } from 'vs/platform/ipc/electron-sandbox/services';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { IRemoteAgentService } from '../../remote/common/remoteAgentService';
// @ts-ignore: interface is implemented via proxy
export class LocalizationsService implements ILocalizationsService {
@ -14,9 +14,17 @@ export class LocalizationsService implements ILocalizationsService {
declare readonly _serviceBrand: undefined;
constructor(
@ISharedProcessService sharedProcessService: ISharedProcessService,
@IRemoteAgentService remoteAgentService: IRemoteAgentService,
) {
return ProxyChannel.toService<ILocalizationsService>(sharedProcessService.getChannel('localizations'));
/*
NOTE@coder:
Upstream, they use the ISharedProcessService.
We run this on the browser where there is no shared process so it needs to connect
to the localization channel through the remote agent.
3/16/21 jsjoeio code-asher
*/
return ProxyChannel.toService<ILocalizationsService>(remoteAgentService.getConnection()!.getChannel('localizations'));
}
}