- clear: clears terminal screen - config: view and set editor / code-editor preferences - version: print version and git hash (noz 0.1.0 (abc1234))
64 lines
2.1 KiB
C#
64 lines
2.1 KiB
C#
using NozCli.Repl;
|
|
using Spectre.Console;
|
|
|
|
namespace NozCli.Commands;
|
|
|
|
public class ConfigCommand : ICommand
|
|
{
|
|
public string Name => "config";
|
|
public string Description => "Show or set CLI configuration (editor, code-editor)";
|
|
public string Usage => "config [editor|code-editor] [value]";
|
|
|
|
public Task ExecuteAsync(string[] args, ReplContext ctx, CancellationToken ct = default)
|
|
{
|
|
var cfg = ctx.Config;
|
|
|
|
if (args.Length == 0)
|
|
{
|
|
// Show current config
|
|
var editorVal = cfg.Editor ?? "[dim](auto)[/]";
|
|
var codeEditorVal = cfg.CodeEditor ?? "[dim](auto)[/]";
|
|
|
|
AnsiConsole.WriteLine();
|
|
AnsiConsole.MarkupLine($" [dim grey]editor[/] {editorVal}");
|
|
AnsiConsole.MarkupLine($" [dim grey]code-editor[/] {codeEditorVal}");
|
|
AnsiConsole.MarkupLine($" [dim grey]server[/] {cfg.ServerUrl}");
|
|
AnsiConsole.WriteLine();
|
|
AnsiConsole.MarkupLine("[dim]Set with: config editor <nano|vim|vi|notepad>[/]");
|
|
AnsiConsole.MarkupLine("[dim] config code-editor <code|zed|subl|vim>[/]");
|
|
AnsiConsole.WriteLine();
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
var key = args[0].ToLowerInvariant();
|
|
var value = args.Length > 1 ? args[1] : null;
|
|
|
|
if (value is null)
|
|
{
|
|
AnsiConsole.MarkupLine($"[red]Usage: config {key} <value>[/]");
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
switch (key)
|
|
{
|
|
case "editor":
|
|
cfg.Editor = value;
|
|
cfg.Save();
|
|
AnsiConsole.MarkupLine($"[green]✓[/] editor → [white]{value}[/]");
|
|
break;
|
|
|
|
case "code-editor":
|
|
case "codeeditor":
|
|
cfg.CodeEditor = value;
|
|
cfg.Save();
|
|
AnsiConsole.MarkupLine($"[green]✓[/] code-editor → [white]{value}[/]");
|
|
break;
|
|
|
|
default:
|
|
AnsiConsole.MarkupLine($"[red]Unknown key:[/] {key} [dim](editor, code-editor)[/]");
|
|
break;
|
|
}
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|