diff --git a/src/vs/code/electron-browser/issue/issueReporter.js b/src/vs/code/electron-browser/issue/issueReporter.js index 423dbe75a1c..5b246f9491b 100644 --- a/src/vs/code/electron-browser/issue/issueReporter.js +++ b/src/vs/code/electron-browser/issue/issueReporter.js @@ -9,6 +9,11 @@ const path = require('path'); const fs = require('fs'); const remote = require('electron').remote; +function assign(destination, source) { + return Object.keys(source) + .reduce(function (r, key) { r[key] = source[key]; return r; }, destination); +} + function parseURLQueryArgs() { const search = window.location.search || ''; @@ -44,6 +49,8 @@ function main() { const args = parseURLQueryArgs(); const configuration = JSON.parse(args['config'] || '{}') || {}; + assign(process.env, configuration.userEnv); + //#region Add support for using node_modules.asar (function () { const path = require('path'); diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 6a255ddf114..47b3b15b814 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -325,7 +325,7 @@ export class CodeApplication { services.set(IWindowsMainService, new SyncDescriptor(WindowsManager, machineId)); services.set(IWindowsService, new SyncDescriptor(WindowsService, this.sharedProcess)); services.set(ILaunchService, new SyncDescriptor(LaunchService)); - services.set(IIssueService, new SyncDescriptor(IssueService, machineId)); + services.set(IIssueService, new SyncDescriptor(IssueService, machineId, this.userEnv)); // Telemtry if (this.environmentService.isBuilt && !this.environmentService.isExtensionDevelopment && !this.environmentService.args['disable-telemetry'] && !!product.enableTelemetry) { diff --git a/src/vs/platform/issue/electron-main/issueService.ts b/src/vs/platform/issue/electron-main/issueService.ts index ce01cabbc9e..7232efc90fb 100644 --- a/src/vs/platform/issue/electron-main/issueService.ts +++ b/src/vs/platform/issue/electron-main/issueService.ts @@ -14,7 +14,7 @@ import { BrowserWindow, ipcMain, screen } from 'electron'; import { ILaunchService } from 'vs/code/electron-main/launch'; import { getPerformanceInfo, PerformanceInfo, getSystemInfo, SystemInfo } from 'vs/code/electron-main/diagnostics'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh, IProcessEnvironment } from 'vs/base/common/platform'; import { ILogService } from 'vs/platform/log/common/log'; const DEFAULT_BACKGROUND_COLOR = '#1E1E1E'; @@ -26,9 +26,10 @@ export class IssueService implements IIssueService { constructor( private machineId: string, + private userEnv: IProcessEnvironment, @IEnvironmentService private environmentService: IEnvironmentService, @ILaunchService private launchService: ILaunchService, - @ILogService private logService: ILogService + @ILogService private logService: ILogService, ) { } openReporter(data: IssueReporterData): TPromise { @@ -171,6 +172,7 @@ export class IssueService implements IIssueService { nodeCachedDataDir: this.environmentService.nodeCachedDataDir, windowId: this._issueWindow.id, machineId: this.machineId, + userEnv: this.userEnv, data, features };