jtr/Jtr.Tools.CLI/Json2CSharpCommand.cs
mdnapo 96c203f842
All checks were successful
Run the JSON parser tests / test (push) Has been skipped
Moved UI to separate project, added Dockerfile & renamed project
2024-10-19 12:04:40 +02:00

45 lines
1.6 KiB
C#

using System.CommandLine;
using Jtr.Tools.CLI.Extensions;
namespace Jtr.Tools.CLI;
public partial class Json2CSharpCommand : Command
{
private static readonly Option<string> RootClassNameOption =
new(
aliases: ["--root-class", "--root", "-r"],
description: "The name of the root class",
getDefaultValue: () => Json2CSharpTranslator.Context.DefaultRootClassName
);
private static readonly Option<string> NamespaceOption = new(
aliases: ["--namespace", "--ns", "-n",],
description: "The namespace to use",
getDefaultValue: () => Json2CSharpTranslator.Context.DefaultNamespace
);
public Json2CSharpCommand() : base("2csharp", "Transform a JSON object into a C# class")
{
AddAlias("2cs");
AddAlias("2c#");
this.AddInputOutputCommandOptions();
AddOption(RootClassNameOption);
AddOption(NamespaceOption);
this.SetHandler(ExecuteAsync, new CommandOptionsBinder());
}
private static async Task ExecuteAsync(CommandOptions options)
{
var json = await InputOutputHandler.HandleInput(options.Input, options.InputArgument, options.InputFile);
var output = Json2CSharpTranslator.Translate(json, new()
{
RootClassName = options.RootClassName ?? Json2CSharpTranslator.Context.DefaultRootClassName,
Namespace = options.Namespace ?? Json2CSharpTranslator.Context.DefaultNamespace
});
await InputOutputHandler.HandleOutput(options.Output, options.OutputFile, output);
}
}