using Microsoft.Extensions.DependencyInjection; using MycroForge.CLI.Commands.Interfaces; using MycroForge.CLI.Features; namespace MycroForge.CLI.Extensions; public static class ServiceCollectionExtensions { public static IServiceCollection AddServices(this IServiceCollection services, string[] args) { services.AddScoped(_ => new ArgsContext { // Make sure to display the help text when no args are passed Args = args.Length == 0 ? ["--help"] : args }); services.AddScoped(); services.AddScoped(); services.AddScoped(); return services; } public static IServiceCollection AddCommands(this IServiceCollection services) { // Register "m4g" services.AddScoped(); services.AddScoped, Commands.MycroForge.Init>(); services.AddScoped, Commands.MycroForge.Run>(); services.AddScoped, Commands.MycroForge.Install>(); services.AddScoped, Commands.MycroForge.Uninstall>(); // Register "m4g add" services.AddScoped, Commands.MycroForge.Add>(); services.AddScoped, Commands.MycroForge.Add.Api>(); services.AddScoped, Commands.MycroForge.Add.Orm>(); // Register "m4g generate" services.AddScoped, Commands.MycroForge.Generate>(); services.AddScoped, Commands.MycroForge.Generate.Entity>(); services.AddScoped, Commands.MycroForge.Generate.Router>(); services.AddScoped, Commands.MycroForge.Generate.Migration>(); // Register "m4g entity" services.AddScoped, Commands.MycroForge.Entity>(); services.AddScoped, Commands.MycroForge.Entity.Link>(); services.AddScoped, Commands.MycroForge.Entity.Link.One>(); services.AddScoped, Commands.MycroForge.Entity.Link.Many>(); // Register "m4g migrations" services.AddScoped, Commands.MycroForge.Migrations>(); services.AddScoped, Commands.MycroForge.Migrations.Apply>(); services.AddScoped, Commands.MycroForge.Migrations.Rollback>(); return services; } }