Skip to content

Commit f3b1076

Browse files
author
Akash Satheesan
committed
fix(lib/vscode): get vscode to compile
1 parent 5e63b7f commit f3b1076

File tree

4 files changed

+66
-51
lines changed

4 files changed

+66
-51
lines changed

lib/vscode/src/vs/platform/environment/common/environmentService.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,23 @@ import { URI } from 'vs/base/common/uri';
1515
import { ExtensionKind } from 'vs/platform/extensions/common/extensions';
1616
import { env } from 'vs/base/common/process';
1717

18+
19+
function parsePathArg(arg: string | undefined, process: NodeJS.Process): string | undefined {
20+
if (!arg) {
21+
return undefined;
22+
}
23+
24+
// Determine if the arg is relative or absolute, if relative use the original CWD
25+
// (VSCODE_CWD), not the potentially overridden one (process.cwd()).
26+
const resolved = resolve(arg);
27+
28+
if (normalize(arg) === resolved) {
29+
return resolved;
30+
}
31+
32+
return resolve(process.env['VSCODE_CWD'] || process.cwd(), arg);
33+
}
34+
1835
export interface INativeEnvironmentPaths {
1936

2037
/**
@@ -173,6 +190,19 @@ export abstract class AbstractNativeEnvironmentService implements INativeEnviron
173190
return undefined;
174191
}
175192

193+
/**
194+
* NOTE@coder: add extraExtensionPaths and extraBuiltinExtensionPaths
195+
* Code location changed after 1.54 (was earlier directly in NativeEnvironmentService).
196+
*/
197+
@memoize
198+
get extraExtensionPaths(): string[] {
199+
return (this._args['extra-extensions-dir'] || []).map((p) => <string>parsePathArg(p, process));
200+
}
201+
@memoize
202+
get extraBuiltinExtensionPaths(): string[] {
203+
return (this._args['extra-builtin-extensions-dir'] || []).map((p) => <string>parsePathArg(p, process));
204+
}
205+
176206
@memoize
177207
get extensionDevelopmentKind(): ExtensionKind[] | undefined {
178208
return this.args.extensionDevelopmentKind?.map(kind => kind === 'ui' || kind === 'workspace' || kind === 'web' ? kind : 'workspace');

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

Lines changed: 33 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBu
3333
import * as terminalEnvironment from 'vs/workbench/contrib/terminal/common/terminalEnvironment';
3434
import { getMainProcessParentEnv } from 'vs/workbench/contrib/terminal/node/terminalEnvironment';
3535
import { TerminalProcess } from 'vs/platform/terminal/node/terminalProcess';
36-
import { ISetTerminalLayoutInfoArgs, IGetTerminalLayoutInfoArgs } from 'vs/platform/terminal/common/terminalProcess';
36+
import { ISetTerminalLayoutInfoArgs, IGetTerminalLayoutInfoArgs, IProcessDetails } from 'vs/platform/terminal/common/terminalProcess';
3737
import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver';
3838
import { ExtensionScanner, ExtensionScannerInput } from 'vs/workbench/services/extensions/node/extensionPoints';
3939

@@ -415,7 +415,7 @@ class Terminal {
415415
private disposeDelay = 48 * 60 * 60 * 1000;
416416

417417
private buffering = false;
418-
private readonly _onEvent = new Emitter<terminal.IRemoteTerminalProcessEvent>({
418+
private readonly _onEvent = new Emitter<any>({
419419
// Don't bind to data until something is listening.
420420
onFirstListenerAdd: () => {
421421
logger.debug('Terminal bound', field('id', this.id));
@@ -461,7 +461,7 @@ class Terminal {
461461
}
462462
});
463463

464-
public get onEvent(): Event<terminal.IRemoteTerminalProcessEvent> { return this._onEvent.event; }
464+
public get onEvent(): Event<any> { return this._onEvent.event; }
465465

466466
// Buffer to reduce the number of messages going to the renderer.
467467
private readonly bufferer = new TerminalDataBufferer((_, data) => {
@@ -624,7 +624,7 @@ class Terminal {
624624
/**
625625
* Serializable terminal information that can be sent to the client.
626626
*/
627-
public async description(id: number): Promise<terminal.IRemoteTerminalDescriptionDto> {
627+
public async description(id: number): Promise<IProcessDetails> {
628628
const cwd = await this.getCwd();
629629
return {
630630
id,
@@ -658,23 +658,22 @@ export class TerminalProviderChannel implements IServerChannel<RemoteAgentConnec
658658
throw new Error(`Invalid listen '${event}'`);
659659
}
660660

661-
private onTerminalProcessEvent(args: terminal.IOnTerminalProcessEventArguments): Event<terminal.IRemoteTerminalProcessEvent> {
662-
return this.getTerminal(args.id).onEvent;
661+
private onTerminalProcessEvent(id: number): Event<any> {
662+
return this.getTerminal(id).onEvent;
663663
}
664664

665665
public call(context: RemoteAgentConnectionContext, command: string, args?: any): Promise<any> {
666666
switch (command) {
667667
case '$createTerminalProcess': return this.createTerminalProcess(context.remoteAuthority, args);
668-
case '$startTerminalProcess': return this.startTerminalProcess(args);
669-
case '$sendInputToTerminalProcess': return this.sendInputToTerminalProcess(args);
670-
case '$sendCharCountToTerminalProcess': return this.sendCharCountToTerminalProcess(args);
671-
case '$shutdownTerminalProcess': return this.shutdownTerminalProcess(args);
672-
case '$resizeTerminalProcess': return this.resizeTerminalProcess(args);
673-
case '$getTerminalInitialCwd': return this.getTerminalInitialCwd(args);
674-
case '$getTerminalCwd': return this.getTerminalCwd(args);
675-
case '$sendCommandResultToTerminalProcess': return this.sendCommandResultToTerminalProcess(args);
676-
case '$orphanQuestionReply': return this.orphanQuestionReply(args[0]);
677-
case '$listTerminals': return this.listTerminals(args[0]);
668+
case '$startTerminalProcess': return this.startTerminalProcess(...args as [number]);
669+
case '$sendInputToTerminalProcess': return this.sendInputToTerminalProcess(...args as [number, string]);
670+
case '$sendCharCountToTerminalProcess': return this.sendCharCountToTerminalProcess(...args as [number, number]);
671+
case '$shutdownTerminalProcess': return this.shutdownTerminalProcess(...args as [number, boolean]);
672+
case '$resizeTerminalProcess': return this.resizeTerminalProcess(...args as [number, number, number]);
673+
case '$getTerminalInitialCwd': return this.getTerminalInitialCwd(...args as [number]);
674+
case '$getTerminalCwd': return this.getTerminalCwd(...args as [number]);
675+
case '$sendCommandResultToTerminalProcess': return this.sendCommandResultToTerminalProcess(...args as [number, number, boolean, any]);
676+
case '$orphanQuestionReply': return this.orphanQuestionReply(...args as [number]);
678677
case '$setTerminalLayoutInfo': return this.setTerminalLayoutInfo(args);
679678
case '$getTerminalLayoutInfo': return this.getTerminalLayoutInfo(args);
680679
}
@@ -729,7 +728,7 @@ export class TerminalProviderChannel implements IServerChannel<RemoteAgentConnec
729728
const executable = terminalEnvironment.getDefaultShell(
730729
(key) => args.configuration[key],
731730
args.isWorkspaceShellAllowed,
732-
await getSystemShell(platform.platform),
731+
await getSystemShell(platform.platform, env),
733732
process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432'),
734733
process.env.windir,
735734
resolver,
@@ -816,7 +815,7 @@ export class TerminalProviderChannel implements IServerChannel<RemoteAgentConnec
816815
terminal.onDispose(() => this.terminals.delete(terminalId));
817816

818817
return {
819-
terminalId,
818+
persistentTerminalId: terminalId,
820819
resolvedShellLaunchConfig,
821820
};
822821
}
@@ -829,58 +828,44 @@ export class TerminalProviderChannel implements IServerChannel<RemoteAgentConnec
829828
return terminal;
830829
}
831830

832-
private async startTerminalProcess(args: terminal.IStartTerminalProcessArguments): Promise<ITerminalLaunchError | void> {
833-
return this.getTerminal(args.id).start();
831+
private async startTerminalProcess(id: number): Promise<ITerminalLaunchError | void> {
832+
return this.getTerminal(id).start();
834833
}
835834

836-
private async sendInputToTerminalProcess(args: terminal.ISendInputToTerminalProcessArguments): Promise<void> {
837-
return this.getTerminal(args.id).input(args.data);
835+
private async sendInputToTerminalProcess(id: number, data: string): Promise<void> {
836+
return this.getTerminal(id).input(data);
838837
}
839838

840-
private async sendCharCountToTerminalProcess(args: terminal.ISendCharCountToTerminalProcessArguments): Promise<void> {
841-
return this.getTerminal(args.id).acknowledgeDataEvent(args.charCount);
839+
private async sendCharCountToTerminalProcess(id: number, charCount: number): Promise<void> {
840+
return this.getTerminal(id).acknowledgeDataEvent(charCount);
842841
}
843842

844-
private async shutdownTerminalProcess(args: terminal.IShutdownTerminalProcessArguments): Promise<void> {
845-
return this.getTerminal(args.id).shutdown(args.immediate);
843+
private async shutdownTerminalProcess(id: number, immediate: boolean): Promise<void> {
844+
return this.getTerminal(id).shutdown(immediate);
846845
}
847846

848-
private async resizeTerminalProcess(args: terminal.IResizeTerminalProcessArguments): Promise<void> {
849-
return this.getTerminal(args.id).resize(args.cols, args.rows);
847+
private async resizeTerminalProcess(id: number, cols: number, rows: number): Promise<void> {
848+
return this.getTerminal(id).resize(cols, rows);
850849
}
851850

852-
private async getTerminalInitialCwd(args: terminal.IGetTerminalInitialCwdArguments): Promise<string> {
853-
return this.getTerminal(args.id).getInitialCwd();
851+
private async getTerminalInitialCwd(id: number): Promise<string> {
852+
return this.getTerminal(id).getInitialCwd();
854853
}
855854

856-
private async getTerminalCwd(args: terminal.IGetTerminalCwdArguments): Promise<string> {
857-
return this.getTerminal(args.id).getCwd();
855+
private async getTerminalCwd(id: number): Promise<string> {
856+
return this.getTerminal(id).getCwd();
858857
}
859858

860-
private async sendCommandResultToTerminalProcess(_: terminal.ISendCommandResultToTerminalProcessArguments): Promise<void> {
859+
private async sendCommandResultToTerminalProcess(id: number, reqId: number, isError: boolean, payload: any): Promise<void> {
861860
// NOTE: Not required unless we implement the `execCommand` event, see above.
862861
throw new Error('not implemented');
863862
}
864863

865-
private async orphanQuestionReply(_: terminal.IOrphanQuestionReplyArgs): Promise<void> {
864+
private async orphanQuestionReply(id: number): Promise<void> {
866865
// NOTE: Not required unless we implement the `orphan?` event, see above.
867866
throw new Error('not implemented');
868867
}
869868

870-
private async listTerminals(_: terminal.IListTerminalsArgs): Promise<terminal.IRemoteTerminalDescriptionDto[]> {
871-
// TODO: args.isInitialization. Maybe this is to have slightly different
872-
// behavior when first listing terminals but I don't know what you'd want to
873-
// do differently. Maybe it's to reset the terminal dispose timeouts or
874-
// something like that, but why not do it each time you list?
875-
const terminals = await Promise.all(Array.from(this.terminals).map(async ([id, terminal]) => {
876-
return terminal.description(id);
877-
}));
878-
879-
// Only returned orphaned terminals so we don't end up attaching to
880-
// terminals already attached elsewhere.
881-
return terminals.filter((t) => t.isOrphan);
882-
}
883-
884869
public async setTerminalLayoutInfo(args: ISetTerminalLayoutInfoArgs): Promise<void> {
885870
this.layouts.set(args.workspaceId, args);
886871
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as fs from 'fs';
22
import * as path from 'path';
33
import * as util from 'util';
4-
import { getPathFromAmdModule } from 'vs/base/common/amd';
4+
import { FileAccess } from 'vs/base/common/network';
55
import * as lp from 'vs/base/node/languagePacks';
66
import product from 'vs/platform/product/common/product';
77
import { Translations } from 'vs/workbench/services/extensions/common/extensionPoints';
88

99
const configurations = new Map<string, Promise<lp.NLSConfiguration>>();
10-
const metadataPath = path.join(getPathFromAmdModule(require, ''), 'nls.metadata.json');
10+
const metadataPath = path.join(FileAccess.asFileUri('', require).fsPath, 'nls.metadata.json');
1111

1212
export const isInternalConfiguration = (config: lp.NLSConfiguration): config is lp.InternalNLSConfiguration => {
1313
return config && !!(<lp.InternalNLSConfiguration>config)._languagePackId;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ export class Vscode {
209209
// ../../electron-browser/sharedProcess/sharedProcessMain.ts#L148
210210
// ../../../code/electron-main/app.ts
211211
private async initializeServices(args: NativeParsedArgs): Promise<void> {
212-
const environmentService = new NativeEnvironmentService(args);
212+
const environmentService = new NativeEnvironmentService(args, this.services.get<IProductService>(IProductService) as IProductService);
213213
// https://github.com/cdr/code-server/issues/1693
214214
fs.mkdirSync(environmentService.globalStorageHome.fsPath, { recursive: true });
215215
const logService = new MultiplexLogService([

0 commit comments

Comments
 (0)