message: Check that argument is an url or a regular file before opening
  Changelog-entry: Check that argument is an url or a regular file before opening
  Change-type: patch
diff: import { delay } from 'bluebird';
  import * as electron from 'electron';
  import { autoUpdater } from 'electron-updater';
  +import { promises as fs } from 'fs';
  import { platform } from 'os';
  import * as _ from 'lodash';
  import * as path from 'path';
  @@ -57,7 +58,17 @@ async function checkForUpdates(interval: number) {
  }
  }
  -function getCommandLineURL(argv: string[]): string | undefined {
  +async function isFile(filePath: string): Promise<boolean> {
  + try {
  + const stat = await fs.stat(filePath);
  + return stat.isFile();
  + } catch {
  + // noop
  + }
  + return false;
  +}
  +
  +async function getCommandLineURL(argv: string[]): Promise<string | undefined> {
  argv = argv.slice(electron.app.isPackaged ? 1 : 2);
  if (argv.length) {
  const value = argv[argv.length - 1];
  @@ -69,6 +80,14 @@ function getCommandLineURL(argv: string[]): string | undefined {
  if (platform() === 'darwin' && value.startsWith('-psn_')) {
  return;
  }
  + if (
  + !value.startsWith('http://') &&
  + !value.startsWith('https://') &&
  + !value.startsWith(scheme) &&
  + !(await isFile(value))
  + ) {
  + return;
  + }
  return value;
  }
  }
  @@ -204,9 +223,9 @@ async function main(): Promise<void> {
  window.restore();
  }
  window.focus();
  - await selectImageURL(getCommandLineURL(argv));
  + await selectImageURL(await getCommandLineURL(argv));
  });
  - await selectImageURL(getCommandLineURL(process.argv));
  + await selectImageURL(await getCommandLineURL(process.argv));
  }
  }
  