forked from sim0n00ps/OF-DL
52 lines
2.0 KiB
C#
52 lines
2.0 KiB
C#
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
AnsiConsole.Write(new FigletText("Welcome to OF-DL").Color(Color.Red));
|
|
|
|
ServiceCollection services = await ConfigureServices(args);
|
|
|
|
|
|
|
|
static async Task<ServiceCollection> ConfigureServices(string[] args)
|
|
{
|
|
// Set up dependency injection with LoggingService and ConfigService
|
|
ServiceCollection services = new();
|
|
services.AddSingleton<ILoggingService, SeqLoggingService>();
|
|
services.AddSingleton<IConfigService, ConfigService>();
|
|
services.AddSingleton(new ExitHelper(new SpectreDownloadEventHandler()));
|
|
ServiceProvider tempServiceProvider = services.BuildServiceProvider();
|
|
|
|
ILoggingService loggingService = tempServiceProvider.GetRequiredService<ILoggingService>();
|
|
IConfigService configService = tempServiceProvider.GetRequiredService<IConfigService>();
|
|
ExitHelper exitHelper = tempServiceProvider.GetRequiredService<ExitHelper>();
|
|
|
|
if (!await configService.LoadConfigurationAsync(args))
|
|
{
|
|
AnsiConsole.MarkupLine("\n[red]config.conf is not valid, check your syntax![/]\n");
|
|
if (!configService.IsCliNonInteractive)
|
|
{
|
|
AnsiConsole.MarkupLine("[red]Press any key to exit.[/]");
|
|
Console.ReadKey();
|
|
}
|
|
|
|
exitHelper.ExitWithCode(3);
|
|
}
|
|
|
|
AnsiConsole.Markup("[green]config.conf located successfully!\n[/]");
|
|
|
|
// Set up full dependency injection with loaded config
|
|
services = [];
|
|
services.AddSingleton(loggingService);
|
|
services.AddSingleton(configService);
|
|
services.AddSingleton(exitHelper);
|
|
services.AddSingleton<IAuthService, AuthService>();
|
|
services.AddSingleton<IApiService, ApiService>();
|
|
services.AddSingleton<IDbService, DbService>();
|
|
services.AddSingleton<IDownloadService, DownloadService>();
|
|
services.AddSingleton<IFileNameService, FileNameService>();
|
|
services.AddSingleton<IStartupService, StartupService>();
|
|
services.AddSingleton<IDownloadOrchestrationService, DownloadOrchestrationService>();
|
|
services.AddSingleton<Program>();
|
|
|
|
return services;
|
|
}
|