51 lines
2.5 KiB
C#
51 lines
2.5 KiB
C#
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<ArgsContext>(_ =>
|
|
new ArgsContext
|
|
{
|
|
// Make sure to display the help text when no args are passed
|
|
Args = args.Length == 0 ? ["--help"] : args
|
|
});
|
|
services.AddScoped<ProjectContext>();
|
|
services.AddScoped<IFeature, Api>();
|
|
services.AddScoped<IFeature, Orm>();
|
|
|
|
return services;
|
|
}
|
|
|
|
public static IServiceCollection AddCommands(this IServiceCollection services)
|
|
{
|
|
// Register "m4g"
|
|
services.AddScoped<Commands.MycroForge>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Init>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Run>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Install>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Uninstall>();
|
|
|
|
// Register "m4g add"
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Add>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Add>, Commands.MycroForge.Add.Api>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Add>, Commands.MycroForge.Add.Orm>();
|
|
|
|
// Register "m4g generate"
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Generate>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Generate>, Commands.MycroForge.Generate.Entity>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Generate>, Commands.MycroForge.Generate.Router>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Generate>, Commands.MycroForge.Generate.Migration>();
|
|
|
|
// Register "m4g migrations"
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Migrations>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Migrations>, Commands.MycroForge.Migrations.Apply>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Migrations>, Commands.MycroForge.Migrations.Rollback>();
|
|
|
|
return services;
|
|
}
|
|
} |