41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using Spectre.Console;
|
|
using Toak.Configuration;
|
|
|
|
namespace Toak.Commands;
|
|
|
|
public static class ConfigUpdaterCommand
|
|
{
|
|
public static Task ExecuteAsync(string key, string val, bool verbose)
|
|
{
|
|
Core.Logger.Verbose = verbose;
|
|
var configManager = new ConfigManager();
|
|
var config = configManager.LoadConfig();
|
|
key = key.ToLowerInvariant();
|
|
val = val.ToLowerInvariant();
|
|
|
|
switch (key)
|
|
{
|
|
case "llm": config.LlmModel = val; break;
|
|
case "whisper": config.WhisperModel = val; break;
|
|
case "language":
|
|
case "lang": config.WhisperLanguage = val; break;
|
|
case "backend": config.TypingBackend = val; break;
|
|
case "punctuation":
|
|
if (bool.TryParse(val, out var p)) { config.ModulePunctuation = p; }
|
|
else { AnsiConsole.MarkupLine("[red]Invalid value. Use true or false.[/]"); return Task.CompletedTask; }
|
|
break;
|
|
case "tech":
|
|
if (bool.TryParse(val, out var t)) { config.ModuleTechnicalSanitization = t; }
|
|
else { AnsiConsole.MarkupLine("[red]Invalid value. Use true or false.[/]"); return Task.CompletedTask; }
|
|
break;
|
|
default:
|
|
AnsiConsole.MarkupLine($"[red]Unknown config key: {key}[/]");
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
configManager.SaveConfig(config);
|
|
AnsiConsole.MarkupLine($"[green]Successfully[/] set {key} to [blue]{val}[/].");
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|