52 lines
2.2 KiB
C#
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}[/].");
|
|
}
|
|
}
|