diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2023-04-19 08:46:03 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2023-04-19 13:37:31 +0200 |
| commit | ec33228db6c8c014a67fccd2cd9f2fae9fc414f6 (patch) | |
| tree | ca454c39017c2182231f146d93b7f2e79db1aac0 /gui/src/main/command-line-options.ts | |
| parent | 4626da611b7029aad402b251d18b92389a678c76 (diff) | |
| download | mullvadvpn-ec33228db6c8c014a67fccd2cd9f2fae9fc414f6.tar.xz mullvadvpn-ec33228db6c8c014a67fccd2cd9f2fae9fc414f6.zip | |
Refactor command line option handling
Diffstat (limited to 'gui/src/main/command-line-options.ts')
| -rw-r--r-- | gui/src/main/command-line-options.ts | 60 |
1 files changed, 45 insertions, 15 deletions
diff --git a/gui/src/main/command-line-options.ts b/gui/src/main/command-line-options.ts index 543a384029..a7300d1f83 100644 --- a/gui/src/main/command-line-options.ts +++ b/gui/src/main/command-line-options.ts @@ -1,17 +1,47 @@ -enum CommandLineOptions { - showChanges = '--show-changes', - disableResetNavigation = '--disable-reset-navigation', // development only - disableDevtoolsOpen = '--disable-devtools-open', // development only - forwardRendererLog = '--forward-renderer-log', // development only +class CommandLineOption { + private options: string[]; + + public constructor(private description: string, ...options: string[]) { + this.options = options; + } + + public get match(): boolean { + return this.options.some((option) => process.argv.includes(option)); + } + + public format(): string { + return formatOption(this.description, ...this.options); + } +} + +class DevelopmentCommandLineOption extends CommandLineOption { + public constructor(...options: string[]) { + super('', ...options); + } + + public get match(): boolean { + return process.env.NODE_ENV === 'development' && super.match; + } } -export const SHOULD_SHOW_CHANGES = process.argv.includes(CommandLineOptions.showChanges); -export const SHOULD_DISABLE_RESET_NAVIGATION = process.argv.includes( - CommandLineOptions.disableResetNavigation, -); -export const SHOULD_DISABLE_DEVTOOLS_OPEN = process.argv.includes( - CommandLineOptions.disableDevtoolsOpen, -); -export const SHOULD_FORWARD_RENDERER_LOG = process.argv.includes( - CommandLineOptions.forwardRendererLog, -); +export const CommandLineOptions = { + showChanges: new CommandLineOption('Show changes dialog', '--show-changes'), + disableResetNavigation: new DevelopmentCommandLineOption('--disable-reset-navigation'), + disableDevtoolsOpen: new DevelopmentCommandLineOption('--disable-devtools-open'), + forwardRendererLog: new DevelopmentCommandLineOption('--forward-renderer-log'), +} as const; + +export function printCommandLineOptions() { + Object.values(CommandLineOptions).forEach((option) => { + if (!(option instanceof DevelopmentCommandLineOption)) { + console.log(option.format()); + } + }); +} + +function formatOption(description: string, ...options: string[]) { + const joinedOptions = options.join(', '); + const padding = ' '; + const paddedOptions = (joinedOptions + padding).slice(0, -joinedOptions.length); + return ' ' + paddedOptions + description; +} |
