Files
api-generator/WebServer/Program.cs
2025-10-11 13:08:09 +02:00

72 lines
2.1 KiB
C#

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<App>()
.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<GeneratorHostedService>();
});
await hostBuilder.Build().RunAsync();
}
private static ParserResult<ArgumentsDto> LoadArguments(string[] args) => Parser.Default.ParseArguments<ArgumentsDto>(args);
}