Pipe through --updater/--no-updater flag for flipper.exe (#4277)

Summary:
In our organization, Flipper is distributed in a version controlled way. As a result, we do not want users to manually update or receive prompts to update when a new version is available. There is already a `--updater` flag in the command line arguments for flipper.exe, but it isn't piped through. This change pipes it through and disables all update related UI when `--no-updater` is passed in.
## Changelog

Support --updater and --no-updater options for flipper.exe

Pull Request resolved: https://github.com/facebook/flipper/pull/4277

Test Plan: Ran `yarn build --win` in flipper/desktop, and launched flipper.exe from flipper/dist/win-unpacked with the `--updater`, `--no-updater` and no flags and ensured the proper behavior was observed (update UI shows by default or when `--updater` is specified, and doesn't show when `--no-updater` is specified).

Reviewed By: passy

Differential Revision: D41298321

Pulled By: mweststrate

fbshipit-source-id: 5ddfede2700954f0fdd6a111b20d0836fab25565
This commit is contained in:
Ranesh Saha
2022-11-15 03:23:55 -08:00
committed by Facebook GitHub Bot
parent f70b2a2d1e
commit 7a28ed1fe5
6 changed files with 15 additions and 2 deletions

View File

@@ -77,7 +77,7 @@ export type LauncherSettings = {
};
// Settings that primarily only apply to Electron atm
// TODO: further separte between flipper-ui config and Electron config
// TODO: further separate between flipper-ui config and Electron config
export type ProcessConfig = {
disabledPlugins: string[];
lastWindowPosition: {
@@ -90,6 +90,7 @@ export type ProcessConfig = {
launcherMsg: string | null;
// Controls whether to delegate to the launcher if present.
launcherEnabled: boolean;
updaterEnabled: boolean;
// Control whether to suppress "update available" notifications
suppressPluginUpdateNotifications?: boolean;
};

View File

@@ -18,6 +18,7 @@ test('config is decoded from env', () => {
screenCapturePath: '/my/screenshot/path',
launcherEnabled: false,
suppressPluginUpdateNotifications: true,
updaterEnabled: true,
}),
});
@@ -28,6 +29,7 @@ test('config is decoded from env', () => {
screenCapturePath: '/my/screenshot/path',
launcherEnabled: false,
suppressPluginUpdateNotifications: true,
updaterEnabled: true,
});
});
@@ -39,5 +41,6 @@ test('config is decoded from env with defaults', () => {
screenCapturePath: undefined,
launcherEnabled: true,
suppressPluginUpdateNotifications: false,
updaterEnabled: true,
});
});

View File

@@ -18,6 +18,8 @@ export function loadProcessConfig(env: NodeJS.ProcessEnv): ProcessConfig {
screenCapturePath: json.screenCapturePath,
launcherEnabled:
typeof json.launcherEnabled === 'boolean' ? json.launcherEnabled : true,
updaterEnabled:
typeof json.updaterEnabled === 'boolean' ? json.updaterEnabled : true,
suppressPluginUpdateNotifications:
typeof json.suppressPluginUpdateNotifications === 'boolean'
? json.suppressPluginUpdateNotifications

View File

@@ -85,6 +85,7 @@ export default function UpdateIndicator() {
}
} else if (
version &&
config.updaterEnabled &&
!config.suppressPluginUpdateNotifications &&
isProduction()
) {

View File

@@ -284,7 +284,12 @@ async function waitForLogin(store: Store) {
async function verifyFlipperIsUpToDate(title: string) {
const config = getRenderHostInstance().serverConfig.processConfig;
if (!isProduction() || isTest() || config.suppressPluginUpdateNotifications) {
if (
!isProduction() ||
isTest() ||
!config.updaterEnabled ||
config.suppressPluginUpdateNotifications
) {
return;
}
const currentVersion = getAppVersion();

View File

@@ -137,6 +137,7 @@ function createStubRenderHost(): RenderHost {
launcherEnabled: false,
launcherMsg: null,
screenCapturePath: `/dev/null`,
updaterEnabled: true,
suppressPluginUpdateNotifications: false,
},
settings: {