// Copyright (c) The Geekeey Authors // SPDX-License-Identifier: EUPL-1.2 using Spectre.Console.Cli; internal sealed class EchoCommand : AsyncOutputCommand { public sealed class Settings : OutputCommandSettings { [CommandOption("--separator ")] public string Separator { get; init; } = " "; [CommandArgument(0, "[line]")] public string[] Items { get; init; } = []; } public override async Task ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken) { using var output = Output.Connect(); foreach (var writer in output.GetWriters(settings.Target)) { await writer.WriteLineAsync(string.Join(settings.Separator, settings.Items)); } return 0; } }