Skip to content

Commit 122c0fa

Browse files
committed
Patch reh agent to accept args
This way we can import it instead of the reh agent server which does not include the directory creation logic we need.
1 parent 57c765f commit 122c0fa

File tree

3 files changed

+27
-28
lines changed

3 files changed

+27
-28
lines changed

build/gulpfile.reh.js

-8
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,6 @@ const serverEntryPoints = [
9494
name: 'vs/server/remoteExtensionHostAgent',
9595
exclude: ['vs/css', 'vs/nls']
9696
},
97-
// NOTE@coder: Normally remoteExtensionHostAgentServer is bundled into
98-
// remoteExtensionHostAgent however code-server imports the former directly so
99-
// make sure it remains as a separate file by adding it as a separate entry
100-
// point.
101-
{
102-
name: 'vs/server/remoteExtensionHostAgentServer',
103-
exclude: ['vs/css', 'vs/nls']
104-
},
10597
{
10698
name: 'vs/server/remoteCli',
10799
exclude: ['vs/css', 'vs/nls']

src/vs/server/@types/code-server-lib/index.d.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ declare global {
8585
serverUrl: URL;
8686
}
8787

88-
export type CreateServer = (address: string | net.AddressInfo | null, args: ServerParsedArgs, REMOTE_DATA_FOLDER: string) => Promise<IServerAPI>;
88+
export type CreateServer = (address: string | net.AddressInfo | null, args: ServerParsedArgs) => Promise<IServerAPI>;
8989

9090
export interface ProductDescription {
9191
productName: string;
@@ -106,9 +106,7 @@ declare global {
106106
/**
107107
* @deprecated This should be removed when code-server merges with lib/vscode
108108
*/
109-
export interface IMainCli {
110-
main: (argv: NodeJS.Process['argv']) => Promise<void>;
111-
}
109+
export type SpawnCli = (args: ServerParsedArgs) => Promise<void>;
112110

113111
/**
114112
* @deprecated This should be removed when code-server merges with lib/vscode

src/vs/server/remoteExtensionHostAgent.ts

+25-16
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ import { createServer as doCreateServer, IServerAPI } from 'vs/server/remoteExte
1212
import { parseArgs, ErrorReporter } from 'vs/platform/environment/node/argv';
1313
import { join, dirname } from 'vs/base/common/path';
1414
import { performance } from 'perf_hooks';
15-
import { serverOptions } from 'vs/server/serverEnvironmentService';
15+
import { serverOptions, ServerParsedArgs } from 'vs/server/serverEnvironmentService';
1616
import * as perf from 'vs/base/common/performance';
1717

18+
// NOTE@coder: We already have the arguments so this file has been patched to
19+
// support passing them in.
20+
1821
perf.mark('code/server/codeLoaded');
1922
(<any>global).vscodeServerCodeLoadedTime = performance.now();
2023

@@ -28,37 +31,43 @@ const errorReporter: ErrorReporter = {
2831
}
2932
};
3033

31-
const args = parseArgs(process.argv.slice(2), serverOptions, errorReporter);
34+
function parse() {
35+
return parseArgs(process.argv.slice(2), serverOptions, errorReporter);
36+
}
3237

3338
const REMOTE_DATA_FOLDER = process.env['VSCODE_AGENT_FOLDER'] || join(os.homedir(), '.vscode-remote');
3439
const USER_DATA_PATH = join(REMOTE_DATA_FOLDER, 'data');
3540
const APP_SETTINGS_HOME = join(USER_DATA_PATH, 'User');
3641
const GLOBAL_STORAGE_HOME = join(APP_SETTINGS_HOME, 'globalStorage');
3742
const MACHINE_SETTINGS_HOME = join(USER_DATA_PATH, 'Machine');
38-
args['user-data-dir'] = USER_DATA_PATH;
3943
const APP_ROOT = dirname(FileAccess.asFileUri('', require).fsPath);
4044
const BUILTIN_EXTENSIONS_FOLDER_PATH = join(APP_ROOT, 'extensions');
41-
args['builtin-extensions-dir'] = BUILTIN_EXTENSIONS_FOLDER_PATH;
42-
args['extensions-dir'] = args['extensions-dir'] || join(REMOTE_DATA_FOLDER, 'extensions');
4345

44-
[REMOTE_DATA_FOLDER, args['extensions-dir'], USER_DATA_PATH, APP_SETTINGS_HOME, MACHINE_SETTINGS_HOME, GLOBAL_STORAGE_HOME].forEach(f => {
45-
try {
46-
if (!fs.existsSync(f)) {
47-
fs.mkdirSync(f);
48-
}
49-
} catch (err) { console.error(err); }
50-
});
46+
export function createDirs(args: ServerParsedArgs) {
47+
args['user-data-dir'] = args['user-data-dir'] || USER_DATA_PATH;
48+
args['builtin-extensions-dir'] = args['builtin-extensions-dir'] || BUILTIN_EXTENSIONS_FOLDER_PATH;
49+
args['extensions-dir'] = args['extensions-dir'] || join(REMOTE_DATA_FOLDER, 'extensions');
50+
[REMOTE_DATA_FOLDER, args['extensions-dir'], USER_DATA_PATH, APP_SETTINGS_HOME, MACHINE_SETTINGS_HOME, GLOBAL_STORAGE_HOME].forEach(f => {
51+
try {
52+
if (!fs.existsSync(f)) {
53+
fs.mkdirSync(f);
54+
}
55+
} catch (err) { console.error(err); }
56+
});
57+
}
5158

5259
/**
5360
* invoked by vs/server/main.js
5461
*/
55-
export function spawnCli() {
56-
runCli(args, REMOTE_DATA_FOLDER);
62+
export function spawnCli(args: ServerParsedArgs = parse()): Promise<void> {
63+
createDirs(args)
64+
return runCli(args, args["user-data-dir"] || REMOTE_DATA_FOLDER);
5765
}
5866

5967
/**
6068
* invoked by vs/server/main.js
6169
*/
62-
export function createServer(address: string | net.AddressInfo | null): Promise<IServerAPI> {
63-
return doCreateServer(address, args, REMOTE_DATA_FOLDER);
70+
export function createServer(address: string | net.AddressInfo | null, args: ServerParsedArgs = parse()): Promise<IServerAPI> {
71+
createDirs(args)
72+
return doCreateServer(address, args, args["user-data-dir"] || REMOTE_DATA_FOLDER);
6473
}

0 commit comments

Comments
 (0)