using CommandDotNet.NameCasing; using CommandDotNet; using Microsoft.Extensions.DependencyInjection; using CommandDotNet.IoC.MicrosoftDependencyInjection; using EnvelopeGenerator.Infrastructure; using EnvelopeGenerator.Application.Extensions; using Microsoft.Extensions.Configuration; namespace EnvelopeGenerator.Terminal; public static class DependencyInjection { public static IServiceCollection AddCommandManagerRunner(this IServiceCollection services, IConfiguration configuration, Case @case = Case.KebabCase) { return services .AddSingleton() .AddEnvelopeGeneratorRepositories() .AddEnvelopeGeneratorServices(configuration) .AddSingleton(sp => { var runner = new AppRunner(); runner.UseMicrosoftDependencyInjection(sp); runner.UseNameCasing(@case); return runner; }); } public static Task RunCommandManagerRunner(this IServiceProvider provider, string[] args) { var runner = provider.GetRequiredService>(); return runner.RunAsync(args); } }