using Microsoft.Extensions.DependencyInjection; AnsiConsole.Write(new FigletText("Welcome to OF-DL").Color(Color.Red)); ServiceCollection services = await ConfigureServices(args); static async Task ConfigureServices(string[] args) { // Set up dependency injection with LoggingService and ConfigService ServiceCollection services = new(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(new ExitHelper(new SpectreDownloadEventHandler())); ServiceProvider tempServiceProvider = services.BuildServiceProvider(); ILoggingService loggingService = tempServiceProvider.GetRequiredService(); IConfigService configService = tempServiceProvider.GetRequiredService(); ExitHelper exitHelper = tempServiceProvider.GetRequiredService(); 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(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); return services; }