feat(commands): clear, config, version
- clear: clears terminal screen - config: view and set editor / code-editor preferences - version: print version and git hash (noz 0.1.0 (abc1234))
This commit is contained in:
parent
ae8a961cfd
commit
1865a7ccc2
4 changed files with 102 additions and 0 deletions
16
NozCli/Commands/ClearCommand.cs
Normal file
16
NozCli/Commands/ClearCommand.cs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
using NozCli.Repl;
|
||||
|
||||
namespace NozCli.Commands;
|
||||
|
||||
public class ClearCommand : ICommand
|
||||
{
|
||||
public string Name => "clear";
|
||||
public string Description => "Clear the terminal screen";
|
||||
public string Usage => "clear";
|
||||
|
||||
public Task ExecuteAsync(string[] args, ReplContext ctx, CancellationToken ct = default)
|
||||
{
|
||||
Console.Clear();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
64
NozCli/Commands/ConfigCommand.cs
Normal file
64
NozCli/Commands/ConfigCommand.cs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
17
NozCli/Commands/VersionCommand.cs
Normal file
17
NozCli/Commands/VersionCommand.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
using NozCli.Repl;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace NozCli.Commands;
|
||||
|
||||
public class VersionCommand : ICommand
|
||||
{
|
||||
public string Name => "version";
|
||||
public string Description => "Show noz version info";
|
||||
public string Usage => "version";
|
||||
|
||||
public Task ExecuteAsync(string[] args, ReplContext ctx, CancellationToken ct = default)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"\n [bold cyan]noz[/] [white]{VersionInfo.Full}[/]\n");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
|
@ -15,11 +15,16 @@ public class CommandRegistry
|
|||
new LsCommand(),
|
||||
new CdCommand(),
|
||||
new CatCommand(),
|
||||
new NewCommand(),
|
||||
new EditCommand(),
|
||||
new PushCommand(),
|
||||
new SyncCommand(),
|
||||
new StatusCommand(),
|
||||
new RmCommand(),
|
||||
new ConfigCommand(),
|
||||
new TreeCommand(),
|
||||
new VersionCommand(),
|
||||
new ClearCommand(),
|
||||
};
|
||||
// HelpCommand gets the full list so it can print them all
|
||||
list.Add(new HelpCommand(list));
|
||||
|
|
|
|||
Loading…
Reference in a new issue