Skip to content

Commit b295b72

Browse files
committed
set portable mode
1 parent 7c8a164 commit b295b72

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

src/vs/code/node/cli.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
88
import { assign } from 'vs/base/common/objects';
99
import { parseCLIProcessArgv, buildHelpMessage } from 'vs/platform/environment/node/argv';
1010
import { ParsedArgs } from 'vs/platform/environment/common/environment';
11-
import product from 'vs/platform/node/product';
11+
import product, { IProductConfiguration } from 'vs/platform/node/product';
1212
import pkg from 'vs/platform/node/package';
1313
import * as paths from 'path';
1414
import * as os from 'os';
@@ -19,6 +19,7 @@ import { resolveTerminalEncoding } from 'vs/base/node/encoding';
1919
import * as iconv from 'iconv-lite';
2020
import { writeFileAndFlushSync } from 'vs/base/node/extfs';
2121
import { isWindows } from 'vs/base/common/platform';
22+
import uri from 'vs/base/common/uri';
2223

2324
function shouldSpawnCliProcess(argv: ParsedArgs): boolean {
2425
return !!argv['install-source']
@@ -31,6 +32,15 @@ interface IMainCli {
3132
main: (argv: ParsedArgs) => TPromise<void>;
3233
}
3334

35+
function updateProductJsonSync(fn: (productJson: IProductConfiguration) => void): void {
36+
const rootPath = paths.dirname(uri.parse(require.toUrl('')).fsPath);
37+
const productJsonPath = paths.join(rootPath, 'product.json');
38+
const product = JSON.parse(fs.readFileSync(productJsonPath, 'utf8')) as IProductConfiguration;
39+
fn(product);
40+
41+
fs.writeFileSync(productJsonPath, JSON.stringify(product, null, '\t'), 'utf8');
42+
}
43+
3444
export async function main(argv: string[]): TPromise<any> {
3545
let args: ParsedArgs;
3646

@@ -57,6 +67,18 @@ export async function main(argv: string[]): TPromise<any> {
5767
return mainCli.then(cli => cli.main(args));
5868
}
5969

70+
// Enable Portable
71+
else if (args['set-portable']) {
72+
updateProductJsonSync(product => product.portable = 'code-portable-data');
73+
console.log('Portable mode enabled');
74+
}
75+
76+
// Disable Portable
77+
else if (args['unset-portable']) {
78+
updateProductJsonSync(product => { delete product.portable; delete product.portableTemp; });
79+
console.log('Portable mode disabled');
80+
}
81+
6082
// Write File
6183
else if (args['file-write']) {
6284
const source = args._[0];

src/vs/platform/environment/node/argv.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ const options: minimist.Opts = {
6464
'status',
6565
'file-write',
6666
'file-chmod',
67-
'driver-verbose'
67+
'driver-verbose',
68+
'set-portable',
69+
'unset-portable'
6870
],
6971
alias: {
7072
add: 'a',
@@ -150,6 +152,8 @@ const optionsHelp: { [name: string]: string; } = {
150152
'-w, --wait': localize('wait', "Wait for the files to be closed before returning."),
151153
'--locale <locale>': localize('locale', "The locale to use (e.g. en-US or zh-TW)."),
152154
'--user-data-dir <dir>': localize('userDataDir', "Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of Code."),
155+
'--set-portable': localize('setPortable', "Enables portable mode"),
156+
'--unset-portable': localize('unsedPortable', "Disables portable mode"),
153157
'-v, --version': localize('version', "Print version."),
154158
'-h, --help': localize('help', "Print usage.")
155159
};

0 commit comments

Comments
 (0)