From f3109e89dbd9466954be0b6535f0311409ad0c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <git@minelli.swiss> Date: Mon, 7 Oct 2024 18:08:43 +0200 Subject: [PATCH] Add settings command with set Api Url --- NodeApp/src/commander/CommanderApp.ts | 1 + .../src/commander/settings/SettingsCommand.ts | 23 +++++++++++++++ .../subcommands/SettingsApiCommand.ts | 29 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 NodeApp/src/commander/settings/SettingsCommand.ts create mode 100644 NodeApp/src/commander/settings/subcommands/SettingsApiCommand.ts diff --git a/NodeApp/src/commander/CommanderApp.ts b/NodeApp/src/commander/CommanderApp.ts index 0ac70a8..685da94 100644 --- a/NodeApp/src/commander/CommanderApp.ts +++ b/NodeApp/src/commander/CommanderApp.ts @@ -123,6 +123,7 @@ ${ TextStyle.CODE(' dojo upgrade ') }`, { TagCommand.registerOnCommand(this.program); CompletionCommand.registerOnCommand(this.program); UpgradeCommand.registerOnCommand(this.program); + SettingsCommand.registerOnCommand(this.program); } } diff --git a/NodeApp/src/commander/settings/SettingsCommand.ts b/NodeApp/src/commander/settings/SettingsCommand.ts new file mode 100644 index 0000000..6fbcb6e --- /dev/null +++ b/NodeApp/src/commander/settings/SettingsCommand.ts @@ -0,0 +1,23 @@ +import CommanderCommand from '../CommanderCommand.js'; +import SettingsApiCommand from './subcommands/SettingsApiCommand'; + + +class SettingsCommand extends CommanderCommand { + protected commandName: string = 'settings'; + + protected defineCommand() { + this.command + .description('manage Dojo settings'); + } + + protected defineSubCommands() { + SettingsApiCommand.registerOnCommand(this.command); + } + + protected async commandAction(): Promise<void> { + // No action + } +} + + +export default new SettingsCommand(); \ No newline at end of file diff --git a/NodeApp/src/commander/settings/subcommands/SettingsApiCommand.ts b/NodeApp/src/commander/settings/subcommands/SettingsApiCommand.ts new file mode 100644 index 0000000..b8602c0 --- /dev/null +++ b/NodeApp/src/commander/settings/subcommands/SettingsApiCommand.ts @@ -0,0 +1,29 @@ +import CommanderCommand from '../../CommanderCommand.js'; +import DojoBackendManager from '../../../managers/DojoBackendManager'; +import { Option } from 'commander'; + + +class SettingsApiCommand extends CommanderCommand { + protected commandName: string = 'api'; + + protected defineCommand() { + this.command + .description('change Dojo API URL') + .option('-u, --url <string>', 'specify the url of the Dojo API') + .addOption(new Option('--clean', 'clean the Dojo API settings').conflicts('url')) + .action(this.commandAction.bind(this)); + } + + protected async commandAction(options: { url: string, clean: boolean }): Promise<void> { + if ( options.clean ) { + await DojoBackendManager.cleanApiUrl(); + } else if ( options.url ) { + await DojoBackendManager.setApiUrl(options.url); + } else { + await DojoBackendManager.askApiUrl(true); + } + } +} + + +export default new SettingsApiCommand(); \ No newline at end of file -- GitLab