Updater debug utility

This commit is contained in:
Fedor Indutny 2021-06-30 14:27:18 -07:00 committed by GitHub
parent e7e9021e3f
commit 759ced3417
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 409 additions and 15 deletions

View file

@ -40,8 +40,13 @@ const { platform } = process;
export const ACK_RENDER_TIMEOUT = 10000;
export type UpdaterInterface = {
force(): Promise<void>;
};
export async function checkForUpdates(
logger: LoggerType
logger: LoggerType,
forceUpdate = false
): Promise<{
fileName: string;
version: string;
@ -55,8 +60,11 @@ export async function checkForUpdates(
return null;
}
if (isVersionNewer(version)) {
logger.info(`checkForUpdates: found newer version ${version}`);
if (forceUpdate || isVersionNewer(version)) {
logger.info(
`checkForUpdates: found newer version ${version} ` +
`forceUpdate=${forceUpdate}`
);
return {
fileName: getUpdateFileName(yaml),

View file

@ -4,6 +4,7 @@
import { get as getFromConfig } from 'config';
import { BrowserWindow } from 'electron';
import { UpdaterInterface } from './common';
import { start as startMacOS } from './macos';
import { start as startWindows } from './windows';
import { LocaleType } from '../types/I18N';
@ -11,6 +12,8 @@ import { LoggerType } from '../types/Logging';
let initialized = false;
let updater: UpdaterInterface | undefined;
export async function start(
getMainWindow: () => BrowserWindow,
locale?: LocaleType,
@ -39,14 +42,24 @@ export async function start(
}
if (platform === 'win32') {
await startWindows(getMainWindow, locale, logger);
updater = await startWindows(getMainWindow, locale, logger);
} else if (platform === 'darwin') {
await startMacOS(getMainWindow, locale, logger);
updater = await startMacOS(getMainWindow, locale, logger);
} else {
throw new Error('updater/start: Unsupported platform');
}
}
export async function force(): Promise<void> {
if (!initialized) {
throw new Error("updater/force: Updates haven't been initialized!");
}
if (updater) {
await updater.force();
}
}
function autoUpdateDisabled() {
return (
process.platform === 'linux' ||

View file

@ -21,6 +21,7 @@ import {
setUpdateListener,
showCannotUpdateDialog,
showUpdateDialog,
UpdaterInterface,
} from './common';
import { LocaleType } from '../types/I18N';
import { LoggerType } from '../types/Logging';
@ -36,7 +37,7 @@ export async function start(
getMainWindow: () => BrowserWindow,
locale: LocaleType,
logger: LoggerType
): Promise<void> {
): Promise<UpdaterInterface> {
logger.info('macos/start: starting checks...');
loggerForQuitHandler = logger;
@ -53,6 +54,12 @@ export async function start(
setUpdateListener(createUpdater(logger));
await checkDownloadAndInstall(getMainWindow, locale, logger);
return {
async force(): Promise<void> {
return checkDownloadAndInstall(getMainWindow, locale, logger, true);
},
};
}
let fileName: string;
@ -63,11 +70,12 @@ let loggerForQuitHandler: LoggerType;
async function checkDownloadAndInstall(
getMainWindow: () => BrowserWindow,
locale: LocaleType,
logger: LoggerType
logger: LoggerType,
force = false
) {
logger.info('checkDownloadAndInstall: checking for update...');
try {
const result = await checkForUpdates(logger);
const result = await checkForUpdates(logger, force);
if (!result) {
return;
}

View file

@ -18,6 +18,7 @@ import {
setUpdateListener,
showCannotUpdateDialog,
showUpdateDialog,
UpdaterInterface,
} from './common';
import { LocaleType } from '../types/I18N';
import { LoggerType } from '../types/Logging';
@ -41,7 +42,7 @@ export async function start(
getMainWindow: () => BrowserWindow,
locale: LocaleType,
logger: LoggerType
): Promise<void> {
): Promise<UpdaterInterface> {
logger.info('windows/start: starting checks...');
loggerForQuitHandler = logger;
@ -59,16 +60,23 @@ export async function start(
await deletePreviousInstallers(logger);
await checkDownloadAndInstall(getMainWindow, locale, logger);
return {
async force(): Promise<void> {
return checkDownloadAndInstall(getMainWindow, locale, logger, true);
},
};
}
async function checkDownloadAndInstall(
getMainWindow: () => BrowserWindow,
locale: LocaleType,
logger: LoggerType
logger: LoggerType,
force = false
) {
try {
logger.info('checkDownloadAndInstall: checking for update...');
const result = await checkForUpdates(logger);
const result = await checkForUpdates(logger, force);
if (!result) {
return;
}