summaryrefslogtreecommitdiffhomepage
path: root/gui/src/main/command-line-options.ts
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2023-04-19 08:46:03 +0200
committerOskar Nyberg <oskar@mullvad.net>2023-04-19 13:37:31 +0200
commitec33228db6c8c014a67fccd2cd9f2fae9fc414f6 (patch)
treeca454c39017c2182231f146d93b7f2e79db1aac0 /gui/src/main/command-line-options.ts
parent4626da611b7029aad402b251d18b92389a678c76 (diff)
downloadmullvadvpn-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.ts60
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;
+}