process/src/process.dummy.app/_commands/EchoCommand.cs
Louis Seubert a6f1140b1f
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 1m11s
default / dotnet-default-workflow (push) Successful in 1m10s
chore: update insert_final_newline setting
2026-05-16 12:30:04 +02:00

31 lines
975 B
C#

// Copyright (c) The Geekeey Authors
// SPDX-License-Identifier: EUPL-1.2
using System.CommandLine;
internal sealed class EchoCommand : Command
{
private static readonly Option<OutputTarget> Target = new("--target") { DefaultValueFactory = _ => OutputTarget.StdOut };
private static readonly Option<string> Separator = new("--separator") { DefaultValueFactory = _ => " " };
private static readonly Argument<string[]> Items = new("line") { Arity = ArgumentArity.ZeroOrMore, DefaultValueFactory = _ => [] };
public EchoCommand() : base("echo")
{
Add(Target);
Add(Separator);
Add(Items);
SetAction(ExecuteAsync);
}
public async Task<int> ExecuteAsync(ParseResult result, CancellationToken cancellationToken)
{
using var output = Output.Connect();
foreach (var writer in output.GetWriters(result.GetValue(Target)))
{
await writer.WriteLineAsync(string.Join(result.GetRequiredValue(Separator), result.GetRequiredValue(Items)));
}
return 0;
}
}