diff --git a/src/main.js b/src/main.js index 91fd555fbf4..76f3e939b62 100644 --- a/src/main.js +++ b/src/main.js @@ -9,6 +9,7 @@ global.vscodeStart = Date.now(); var app = require('electron').app; var fs = require('fs'); var path = require('path'); +var minimist = require('minimist'); var paths = require('./paths'); var pkg = require('../package.json'); @@ -127,7 +128,9 @@ try { } // Set userData path before app 'ready' event -var userData = paths.getUserDataPath(process.platform, pkg.name, process.argv); +var argv = minimist(process.argv, { string: ['user-data-dir'] }); +var userDataDir = argv['user-data-dir']; +var userData = paths.getUserDataPath(process.platform, pkg.name, userDataDir); app.setPath('userData', userData); // Mac: when someone drops a file to the not-yet running VSCode, the open-file event fires even before diff --git a/src/paths.js b/src/paths.js index 33bf3f518e8..0aa408bdc33 100644 --- a/src/paths.js +++ b/src/paths.js @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -var minimist = require('minimist'); var path = require('path'); var os = require('os'); @@ -16,15 +15,13 @@ function getAppDataPath(platform) { } } -function getUserDataPath(platform, appName, args) { - var argv = minimist(args, { string: ['user-data-dir'] }); - var userDataDir = argv['user-data-dir']; - var appData = getAppDataPath(platform); - +function getUserDataPath(platform, appName, userDataDir) { if (userDataDir) { return userDataDir; } + var appData = getAppDataPath(platform); + return path.join(appData, appName); } diff --git a/src/vs/base/node/paths.ts b/src/vs/base/node/paths.ts index 8cd14b49f6f..fee645e9d54 100644 --- a/src/vs/base/node/paths.ts +++ b/src/vs/base/node/paths.ts @@ -7,7 +7,7 @@ import uri from 'vs/base/common/uri'; interface IPaths { getAppDataPath(platform: string): string; - getUserDataPath(platform: string, appName: string, args: string[]): string; + getUserDataPath(platform: string, appName: string, userDataDir: string): string; } const pathsPath = uri.parse(require.toUrl('paths')).fsPath; diff --git a/src/vs/platform/environment/node/environmentService.ts b/src/vs/platform/environment/node/environmentService.ts index 190f166dfb6..f5251020d63 100644 --- a/src/vs/platform/environment/node/environmentService.ts +++ b/src/vs/platform/environment/node/environmentService.ts @@ -41,22 +41,22 @@ export class EnvironmentService implements IEnvironmentService { get extensionDevelopmentPath(): string { return this._extensionDevelopmentPath; } get isBuilt(): boolean { return !process.env['VSCODE_DEV']; } - get verbose(): boolean { return this.argv.verbose; } + get verbose(): boolean { return this.parsedArgs.verbose; } - get debugBrkFileWatcherPort(): number { return typeof this.argv.debugBrkFileWatcherPort === 'string' ? Number(this.argv.debugBrkFileWatcherPort) : void 0; } + get debugBrkFileWatcherPort(): number { return typeof this.parsedArgs.debugBrkFileWatcherPort === 'string' ? Number(this.parsedArgs.debugBrkFileWatcherPort) : void 0; } - constructor(private argv: ParsedArgs) { + constructor(private parsedArgs: ParsedArgs) { this._appRoot = path.dirname(URI.parse(require.toUrl('')).fsPath); - this._userDataPath = paths.getUserDataPath(process.platform, pkg.name, process.argv); + this._userDataPath = paths.getUserDataPath(process.platform, pkg.name, parsedArgs['user-data-dir']); this._appSettingsHome = path.join(this.userDataPath, 'User'); this._appSettingsPath = path.join(this.appSettingsHome, 'settings.json'); this._appKeybindingsPath = path.join(this.appSettingsHome, 'keybindings.json'); this._userHome = path.join(os.homedir(), product.dataFolderName); - this._extensionsPath = argv.extensionHomePath || path.join(this._userHome, 'extensions'); + this._extensionsPath = parsedArgs.extensionHomePath || path.join(this._userHome, 'extensions'); this._extensionsPath = path.normalize(this._extensionsPath); - this._extensionDevelopmentPath = argv.extensionDevelopmentPath; + this._extensionDevelopmentPath = parsedArgs.extensionDevelopmentPath; } } \ No newline at end of file