72 lines
2.1 KiB
C#
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);
|
|
|
|
} |