using CommandLine; using Core.Dto; using Core.Interfaces; using Generator; using Generator.DataSource; using WebServer.Components; namespace WebServer; public class Program { public static async Task Main(string[] args) { var parserResult = LoadArguments(args); var parsedArgs = parserResult.Value; if (parsedArgs.Gui) { RunWebServer(parsedArgs); } else { await RunConsole(parsedArgs); } } private static void RunWebServer(ArgumentsDto parsedArgs) { var hostBuilder = WebApplication.CreateBuilder(); hostBuilder.Services.AddRazorComponents().AddInteractiveServerComponents(); hostBuilder.Host.ConfigureServices((hostContext, services) => { IDataSourceLoader loader = new JsonLoader(services, hostContext.Configuration); services.AddServices(loader, parsedArgs); }); hostBuilder.WebHost.UseUrls("http://localhost:1831/"); hostBuilder.WebHost.UseStaticWebAssets(); var app = hostBuilder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error", createScopeForErrors: true); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseAntiforgery(); app.MapRazorComponents() .AddInteractiveServerRenderMode(); app.Run(); } private static async Task RunConsole(ArgumentsDto parsedArgs) { var hostBuilder = Host.CreateDefaultBuilder(); hostBuilder.ConfigureServices((hostContext, services) => { IDataSourceLoader loader = new JsonLoader(services, hostContext.Configuration); services.AddServices(loader, parsedArgs); services.AddHostedService(); }); await hostBuilder.Build().RunAsync(); } private static ParserResult LoadArguments(string[] args) => Parser.Default.ParseArguments(args); }