提交 b295b722 编写于 作者: J Joao Moreno

set portable mode

上级 7c8a1649
...@@ -8,7 +8,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; ...@@ -8,7 +8,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { assign } from 'vs/base/common/objects'; import { assign } from 'vs/base/common/objects';
import { parseCLIProcessArgv, buildHelpMessage } from 'vs/platform/environment/node/argv'; import { parseCLIProcessArgv, buildHelpMessage } from 'vs/platform/environment/node/argv';
import { ParsedArgs } from 'vs/platform/environment/common/environment'; import { ParsedArgs } from 'vs/platform/environment/common/environment';
import product from 'vs/platform/node/product'; import product, { IProductConfiguration } from 'vs/platform/node/product';
import pkg from 'vs/platform/node/package'; import pkg from 'vs/platform/node/package';
import * as paths from 'path'; import * as paths from 'path';
import * as os from 'os'; import * as os from 'os';
...@@ -19,6 +19,7 @@ import { resolveTerminalEncoding } from 'vs/base/node/encoding'; ...@@ -19,6 +19,7 @@ import { resolveTerminalEncoding } from 'vs/base/node/encoding';
import * as iconv from 'iconv-lite'; import * as iconv from 'iconv-lite';
import { writeFileAndFlushSync } from 'vs/base/node/extfs'; import { writeFileAndFlushSync } from 'vs/base/node/extfs';
import { isWindows } from 'vs/base/common/platform'; import { isWindows } from 'vs/base/common/platform';
import uri from 'vs/base/common/uri';
function shouldSpawnCliProcess(argv: ParsedArgs): boolean { function shouldSpawnCliProcess(argv: ParsedArgs): boolean {
return !!argv['install-source'] return !!argv['install-source']
...@@ -31,6 +32,15 @@ interface IMainCli { ...@@ -31,6 +32,15 @@ interface IMainCli {
main: (argv: ParsedArgs) => TPromise<void>; main: (argv: ParsedArgs) => TPromise<void>;
} }
function updateProductJsonSync(fn: (productJson: IProductConfiguration) => void): void {
const rootPath = paths.dirname(uri.parse(require.toUrl('')).fsPath);
const productJsonPath = paths.join(rootPath, 'product.json');
const product = JSON.parse(fs.readFileSync(productJsonPath, 'utf8')) as IProductConfiguration;
fn(product);
fs.writeFileSync(productJsonPath, JSON.stringify(product, null, '\t'), 'utf8');
}
export async function main(argv: string[]): TPromise<any> { export async function main(argv: string[]): TPromise<any> {
let args: ParsedArgs; let args: ParsedArgs;
...@@ -57,6 +67,18 @@ export async function main(argv: string[]): TPromise<any> { ...@@ -57,6 +67,18 @@ export async function main(argv: string[]): TPromise<any> {
return mainCli.then(cli => cli.main(args)); return mainCli.then(cli => cli.main(args));
} }
// Enable Portable
else if (args['set-portable']) {
updateProductJsonSync(product => product.portable = 'code-portable-data');
console.log('Portable mode enabled');
}
// Disable Portable
else if (args['unset-portable']) {
updateProductJsonSync(product => { delete product.portable; delete product.portableTemp; });
console.log('Portable mode disabled');
}
// Write File // Write File
else if (args['file-write']) { else if (args['file-write']) {
const source = args._[0]; const source = args._[0];
......
...@@ -64,7 +64,9 @@ const options: minimist.Opts = { ...@@ -64,7 +64,9 @@ const options: minimist.Opts = {
'status', 'status',
'file-write', 'file-write',
'file-chmod', 'file-chmod',
'driver-verbose' 'driver-verbose',
'set-portable',
'unset-portable'
], ],
alias: { alias: {
add: 'a', add: 'a',
...@@ -150,6 +152,8 @@ const optionsHelp: { [name: string]: string; } = { ...@@ -150,6 +152,8 @@ const optionsHelp: { [name: string]: string; } = {
'-w, --wait': localize('wait', "Wait for the files to be closed before returning."), '-w, --wait': localize('wait', "Wait for the files to be closed before returning."),
'--locale <locale>': localize('locale', "The locale to use (e.g. en-US or zh-TW)."), '--locale <locale>': localize('locale', "The locale to use (e.g. en-US or zh-TW)."),
'--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."), '--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."),
'--set-portable': localize('setPortable', "Enables portable mode"),
'--unset-portable': localize('unsedPortable', "Disables portable mode"),
'-v, --version': localize('version', "Print version."), '-v, --version': localize('version', "Print version."),
'-h, --help': localize('help', "Print usage.") '-h, --help': localize('help', "Print usage.")
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册