70 lines
4.0 KiB
C#
70 lines
4.0 KiB
C#
using Microsoft.Extensions.DependencyInjection;
|
|
using MycroForge.CLI.Commands;
|
|
using MycroForge.Core.Contract;
|
|
using MycroForge.CLI.Features;
|
|
using MycroForge.Core;
|
|
|
|
namespace MycroForge.CLI.Extensions;
|
|
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection RegisterCommandDefaults(this IServiceCollection services)
|
|
{
|
|
// Register ProjectContext & features
|
|
services.AddScoped<ProjectContext>();
|
|
services.AddScoped<IFeature, Git>();
|
|
services.AddScoped<IFeature, Api>();
|
|
services.AddScoped<IFeature, Db>();
|
|
|
|
// Register "m4g"
|
|
services.AddScoped<Commands.MycroForge>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Init>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Install>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Uninstall>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Hydrate>();
|
|
|
|
// Register "m4g generate"
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Generate>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Generate>, Commands.MycroForge.Generate.Service>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Generate>, Commands.MycroForge.Generate.Venv>();
|
|
|
|
// Register "m4g api"
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Api>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Api>, Commands.MycroForge.Api.Run>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Api>, Commands.MycroForge.Api.Generate>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Api.Generate>, Commands.MycroForge.Api.Generate.Router>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Api.Generate>, Commands.MycroForge.Api.Generate.Crud>();
|
|
|
|
// Register "m4g db"
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Db>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db>, Commands.MycroForge.Db.Run>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db>, Commands.MycroForge.Db.Stop>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db>, Commands.MycroForge.Db.Migrate>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db>, Commands.MycroForge.Db.Rollback>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db>, Commands.MycroForge.Db.Generate>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db.Generate>, Commands.MycroForge.Db.Generate.Entity>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db.Generate>, Commands.MycroForge.Db.Generate.Migration>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db>, Commands.MycroForge.Db.Link>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db.Link>, Commands.MycroForge.Db.Link.One>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Db.Link>, Commands.MycroForge.Db.Link.Many>();
|
|
|
|
// Register "m4g plugin"
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge>, Commands.MycroForge.Plugin>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Plugin>, Commands.MycroForge.Plugin.Init>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Plugin>, Commands.MycroForge.Plugin.List>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Plugin>, Commands.MycroForge.Plugin.Install>();
|
|
services.AddScoped<ISubCommandOf<Commands.MycroForge.Plugin>, Commands.MycroForge.Plugin.Uninstall>();
|
|
|
|
return services;
|
|
}
|
|
|
|
public static IServiceCollection RegisterCommandPlugins(this IServiceCollection services)
|
|
{
|
|
var plugins = Plugins.Load();
|
|
|
|
foreach (var plugin in plugins)
|
|
plugin.RegisterServices(services);
|
|
|
|
return services;
|
|
}
|
|
} |