Use yargs for non-headless Flipper args parsing

Summary:
This seems like a better approach than ad-hoc lookup in
`electron.remove.argv`. Left a note to a task to provide
a better interface to this.

I also need this in order to ensure we're starting
Flipper through the launcher which needs to happen
before we start the Electron runtime.

Reviewed By: jknoxville

Differential Revision: D13881355

fbshipit-source-id: 69c70d71035a47084f789ddb4dc969b45ba4648b
This commit is contained in:
Pascal Hartig
2019-02-05 04:46:33 -08:00
committed by Facebook Github Bot
parent 3b75fb092b
commit 74a726aaf9
4 changed files with 30 additions and 7 deletions

View File

@@ -47,7 +47,7 @@ yargs
startFlipper,
)
.version(global.__VERSION__)
.help().argv;
.help();
function startFlipper({
dev,

View File

@@ -9,7 +9,9 @@ import electron from 'electron';
import isProduction from './isProduction';
export const isAutoUpdaterEnabled = () =>
// $FlowFixMe: argv is not included in the type defs.
!electron.remote.process.argv.includes('--no-updater') &&
// TODO(T39788540): Centralise config access and avoid parsing multiple times.
// $FlowFixMe: env is not in the type defs.
JSON.parse(electron.remote?.process.env.CONFIG || process.env.CONFIG || '{}')
.updaterEnabled &&
isProduction() &&
process.platform === 'darwin';
process.platform === 'darwin';

View File

@@ -17,6 +17,7 @@ const compilePlugins = require('./compilePlugins.js');
const os = require('os');
const setup = require('./setup');
const expandTilde = require('expand-tilde');
const yargs = require('yargs');
// disable electron security warnings: https://github.com/electron/electron/blob/master/docs/tutorial/security.md#security-native-capabilities-and-your-responsibility
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = true;
@@ -36,7 +37,17 @@ if (process.platform === 'darwin') {
}
}
let {config, configPath, flipperDir} = setup();
const argv = yargs
.usage('$0 [args]')
.option('updater', {
default: true,
describe: 'Toggle the built-in update mechanism.',
type: 'boolean',
})
.version(global.__VERSION__)
.help().argv;
let {config, configPath, flipperDir} = setup(argv);
const pluginPaths = config.pluginPaths
.concat(

View File

@@ -9,7 +9,7 @@ const path = require('path');
const os = require('os');
const fs = require('fs');
module.exports = function() {
module.exports = function(argv) {
if (!process.env.ANDROID_HOME) {
process.env.ANDROID_HOME = '/opt/android_sdk';
}
@@ -27,7 +27,11 @@ module.exports = function() {
}
const configPath = path.join(flipperDir, 'config.json');
let config = {pluginPaths: [], disabledPlugins: [], lastWindowPosition: {}};
let config = {
pluginPaths: [],
disabledPlugins: [],
lastWindowPosition: {},
};
try {
config = {
@@ -39,5 +43,11 @@ module.exports = function() {
fs.writeFileSync(configPath, JSON.stringify(config));
}
// Non-persistent CLI arguments.
config = {
...config,
updaterEnabled: argv.updater,
};
return {config, configPath, flipperDir};
};