diff --git a/Cajetan.OF-DL.slnx b/Cajetan.OF-DL.slnx new file mode 100644 index 0000000..0d7247c --- /dev/null +++ b/Cajetan.OF-DL.slnx @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Cajetan.OF-DL/Cajetan.OF-DL.csproj b/Cajetan.OF-DL/Cajetan.OF-DL.csproj new file mode 100644 index 0000000..b63f27b --- /dev/null +++ b/Cajetan.OF-DL/Cajetan.OF-DL.csproj @@ -0,0 +1,48 @@ + + + + Exe + net10.0 + OF_DL + enable + enable + Icon\download.ico + + + + false + true + embedded + + + + + + + + + ..\OF DL\References\Spectre.Console.dll + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cajetan.OF-DL/Icon/download.ico b/Cajetan.OF-DL/Icon/download.ico new file mode 100644 index 0000000..222e2cc Binary files /dev/null and b/Cajetan.OF-DL/Icon/download.ico differ diff --git a/Cajetan.OF-DL/ProgramCajetan.cs b/Cajetan.OF-DL/ProgramCajetan.cs new file mode 100644 index 0000000..a7bcb1c --- /dev/null +++ b/Cajetan.OF-DL/ProgramCajetan.cs @@ -0,0 +1,51 @@ +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; +} diff --git a/Cajetan.OF-DL/Properties/GlobalUsings.cs b/Cajetan.OF-DL/Properties/GlobalUsings.cs new file mode 100644 index 0000000..3bb5015 --- /dev/null +++ b/Cajetan.OF-DL/Properties/GlobalUsings.cs @@ -0,0 +1,9 @@ +global using Spectre.Console; +global using OF_DL; +global using OF_DL.CLI; +global using OF_DL.Crypto; +global using OF_DL.Enumerations; +global using OF_DL.Helpers; +global using OF_DL.Models; +global using OF_DL.Services; +global using OF_DL.Utils;