45 lines
1.9 KiB
C#
45 lines
1.9 KiB
C#
using Spectre.Console;
|
|
|
|
namespace AnchorCli;
|
|
|
|
internal static class SetupTui
|
|
{
|
|
public static void Run()
|
|
{
|
|
var config = AnchorConfig.Load();
|
|
|
|
AnsiConsole.Write(new Rule("[cornflowerblue]anchor setup[/]").LeftJustified());
|
|
AnsiConsole.WriteLine();
|
|
|
|
// ── API Key ───────────────────────────────────────────────────
|
|
string maskedKey = config.ApiKey.Length > 8
|
|
? config.ApiKey[..4] + new string('*', config.ApiKey.Length - 8) + config.ApiKey[^4..]
|
|
: config.ApiKey.Length > 0 ? "****" : "[dim](not set)[/]";
|
|
|
|
AnsiConsole.MarkupLine($" Current API key: [dim]{Markup.Escape(maskedKey)}[/]");
|
|
string newKey = AnsiConsole.Prompt(
|
|
new TextPrompt<string>(" New API key [dim](Enter to keep)[/]:")
|
|
.AllowEmpty()
|
|
.Secret('*'));
|
|
|
|
if (!string.IsNullOrWhiteSpace(newKey))
|
|
config.ApiKey = newKey.Trim();
|
|
|
|
AnsiConsole.WriteLine();
|
|
|
|
// ── Model ─────────────────────────────────────────────────────
|
|
AnsiConsole.MarkupLine($" Current model: [cyan]{Markup.Escape(config.Model)}[/]");
|
|
string newModel = AnsiConsole.Prompt(
|
|
new TextPrompt<string>(" New model [dim](Enter to keep)[/]:")
|
|
.AllowEmpty());
|
|
|
|
if (!string.IsNullOrWhiteSpace(newModel))
|
|
config.Model = newModel.Trim();
|
|
|
|
// ── Save ──────────────────────────────────────────────────────
|
|
AnsiConsole.WriteLine();
|
|
config.Save();
|
|
AnsiConsole.MarkupLine("[green]✓ Config saved.[/]");
|
|
}
|
|
}
|