1
0
Files
Toak/Commands/ConfigUpdaterCommand.cs

52 lines
2.2 KiB
C#

using System.Threading.Tasks;
using Spectre.Console;
using Toak.Configuration;
namespace Toak.Commands;
public static class ConfigUpdaterCommand
{
public static async Task ExecuteAsync(string key, string val, bool verbose)
{
Toak.Core.Logger.Verbose = verbose;
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 "style":
if (val == "professional" || val == "concise" || val == "casual") { config.StyleMode = val; }
else { AnsiConsole.MarkupLine("[red]Invalid style.[/] Use: professional, concise, casual"); return; }
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; }
break;
case "tech":
if (bool.TryParse(val, out var t)) { config.ModuleTechnicalSanitization = t; }
else { AnsiConsole.MarkupLine("[red]Invalid value. Use true or false.[/]"); return; }
break;
case "bullets":
if (bool.TryParse(val, out var b)) { config.StructureBulletPoints = b; }
else { AnsiConsole.MarkupLine("[red]Invalid value. Use true or false.[/]"); return; }
break;
case "paragraphs":
if (bool.TryParse(val, out var sp)) { config.StructureSmartParagraphing = sp; }
else { AnsiConsole.MarkupLine("[red]Invalid value. Use true or false.[/]"); return; }
break;
default:
AnsiConsole.MarkupLine($"[red]Unknown config key: {key}[/]");
return;
}
ConfigManager.SaveConfig(config);
AnsiConsole.MarkupLine($"[green]Successfully[/] set {key} to [blue]{val}[/].");
}
}