send parsed process.argv over from main side to renderer

This commit is contained in:
Benjamin Pasero 2016-08-17 11:44:02 +02:00
parent f2086e45f6
commit e3eaa27e41
2 changed files with 15 additions and 17 deletions

View file

@ -13,6 +13,7 @@ import { shell, screen, BrowserWindow } from 'electron';
import { TPromise, TValueCallback } from 'vs/base/common/winjs.base';
import { ICommandLineArguments, IEnvService, IProcessEnvironment } from 'vs/code/electron-main/env';
import { ILogService } from 'vs/code/electron-main/log';
import { parseArgs } from 'vs/code/node/argv';
export interface IWindowState {
width?: number;
@ -419,10 +420,13 @@ export class VSCodeWindow {
this.load(configuration);
}
private getUrl(config: IWindowConfiguration): string {
private getUrl(windowConfiguration: IWindowConfiguration): string {
let url = require.toUrl('vs/workbench/electron-browser/bootstrap/index.html');
// Config
// Config (combination of process.argv and window configuration)
const environment = parseArgs(process.argv);
const config = objects.assign(environment, windowConfiguration);
url += '?config=' + encodeURIComponent(JSON.stringify(config));
return url;

View file

@ -16,9 +16,9 @@ import uri from 'vs/base/common/uri';
import strings = require('vs/base/common/strings');
import {IResourceInput} from 'vs/platform/editor/common/editor';
import {EventService} from 'vs/platform/event/common/eventService';
import {ParsedArgs, parseArgs} from 'vs/code/node/argv';
import {ParsedArgs} from 'vs/code/node/argv';
import {WorkspaceContextService} from 'vs/workbench/services/workspace/common/contextService';
import {IWorkspace, IConfiguration, IEnvironment} from 'vs/platform/workspace/common/workspace';
import {IWorkspace} from 'vs/platform/workspace/common/workspace';
import {ConfigurationService} from 'vs/workbench/services/configuration/node/configurationService';
import {EnvironmentService} from 'vs/platform/environment/node/environmentService';
import path = require('path');
@ -46,7 +46,7 @@ export interface IPath {
columnNumber?: number;
}
export interface IMainEnvironment extends IEnvironment {
export interface IConfiguration extends ParsedArgs {
workspacePath?: string;
filesToOpen?: IPath[];
filesToCreate?: IPath[];
@ -54,16 +54,10 @@ export interface IMainEnvironment extends IEnvironment {
extensionsToInstall?: string[];
}
export function startup(configuration: IMainEnvironment, globalSettings: IGlobalSettings): winjs.TPromise<void> {
// Args (TODO@Ben clean up explicit overwrite of args)
const parsedArgs = parseArgs(process.argv);
if (typeof configuration.extensionDevelopmentPath === 'string') {
parsedArgs.extensionDevelopmentPath = configuration.extensionDevelopmentPath;
}
export function startup(configuration: IConfiguration, globalSettings: IGlobalSettings): winjs.TPromise<void> {
// Shell Configuration
const shellConfiguration: IConfiguration = {
const shellConfiguration: any = {
env: configuration
};
@ -80,12 +74,12 @@ export function startup(configuration: IMainEnvironment, globalSettings: IGlobal
globalSettings: globalSettings
};
if (configuration.enablePerformance) {
if (configuration.performance) {
timer.ENABLE_TIMER = true;
}
// Open workbench
return openWorkbench(parsedArgs, getWorkspace(configuration.workspacePath), shellConfiguration, shellOptions);
return openWorkbench(configuration, getWorkspace(configuration.workspacePath), shellConfiguration, shellOptions);
}
function toInputs(paths: IPath[]): IResourceInput[] {
@ -134,9 +128,9 @@ function getWorkspace(workspacePath: string): IWorkspace {
};
}
function openWorkbench(args: ParsedArgs, workspace: IWorkspace, configuration: IConfiguration, options: IOptions): winjs.TPromise<void> {
function openWorkbench(environment: ParsedArgs, workspace: IWorkspace, configuration: IConfiguration, options: IOptions): winjs.TPromise<void> {
const eventService = new EventService();
const environmentService = new EnvironmentService(args);
const environmentService = new EnvironmentService(environment);
const contextService = new WorkspaceContextService(eventService, workspace, configuration, options);
const configurationService = new ConfigurationService(contextService, eventService, environmentService);