diff --git a/NodeApp/src/commander/CommanderApp.ts b/NodeApp/src/commander/CommanderApp.ts index 0ac70a8639467fb24bc9deeef285e8ebb6b05df9..685da94009efb76da7109860cc2d7430466073b0 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 0000000000000000000000000000000000000000..6fbcb6e7a5cb0b79c7432975a9b2d12fa6a2db98 --- /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 0000000000000000000000000000000000000000..b8602c0d50203a4983f102368ef1a17ec3332482 --- /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