From 5dd00968262880adcafcb30bfa9883f4d3885c43 Mon Sep 17 00:00:00 2001 From: Hirad Date: Thu, 17 Jul 2025 15:10:51 +0330 Subject: [PATCH] add settings command --- src/synclean/cli/commands.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/synclean/cli/commands.py b/src/synclean/cli/commands.py index 3bca393..fa813f2 100644 --- a/src/synclean/cli/commands.py +++ b/src/synclean/cli/commands.py @@ -3,17 +3,42 @@ from synclean.api.synapse import SynapseApiClient from synclean.config.settings import SettingsManager from synclean.cli.room_commands import room from synclean.cli.user_commands import user +from synclean.models.config import SynapseConfig pass_api = click.make_pass_decorator(SynapseApiClient) -@click.group() +@click.group(invoke_without_command=True) @click.pass_context def cli(ctx): """Synclean CLI.""" - settings = SettingsManager() - config = settings.load_config() - ctx.obj = SynapseApiClient(config) + settings_manager = SettingsManager() + config = settings_manager.load_config() + ctx.obj = SynapseApiClient(config) if config else None + + if ctx.invoked_subcommand and ctx.invoked_subcommand != "settings" and not config: + click.echo("Config file not found. Creating it...") + homeserver = click.prompt("Homeserver URL", type=str) + access_token = click.prompt("Access token", type=str, hide_input=True) + new_config = SynapseConfig(homeserver, access_token) + settings_manager.save_config(new_config) + ctx.obj = SynapseApiClient(new_config) + + +@cli.command("settings", help="Manage Synapse settings.") +def settings(): + settings_manager = SettingsManager() + config = settings_manager.load_config() + if config is not None: + click.echo(f"Homeserver: {config.homeserver}") + click.echo(f"Access Token: {'SET' if config.access_token else 'UNSET'}") + else: + click.echo("Config file not found. Creating it...") + homeserver = click.prompt("Homeserver URL", type=str) + access_token = click.prompt("Access token", type=str, hide_input=True) + settings_manager.save_config(SynapseConfig(homeserver, access_token)) + click.echo("Config file created.") + cli.add_command(room) -cli.add_command(user) \ No newline at end of file +cli.add_command(user)