2025-07-26 17:55:02 +01:00
|
|
|
using Microsoft.FluentUI.AspNetCore.Components;
|
2025-07-26 19:04:34 +01:00
|
|
|
using RomRepoMgr.Blazor;
|
2025-07-26 17:55:02 +01:00
|
|
|
using RomRepoMgr.Blazor.Components;
|
2025-07-26 17:59:18 +01:00
|
|
|
using Serilog;
|
|
|
|
|
|
|
|
|
|
Log.Logger = new LoggerConfiguration()
|
|
|
|
|
#if DEBUG
|
|
|
|
|
.MinimumLevel.Debug()
|
|
|
|
|
#else
|
|
|
|
|
.MinimumLevel.Information()
|
|
|
|
|
#endif
|
|
|
|
|
.WriteTo.Console()
|
|
|
|
|
.Enrich.FromLogContext()
|
|
|
|
|
.CreateLogger();
|
|
|
|
|
|
|
|
|
|
Log.Information("Welcome to ROM Repository Manager!");
|
2025-07-26 18:44:39 +01:00
|
|
|
Log.Information("Copyright © 2020-2025 Natalia Portillo");
|
2025-07-26 17:55:02 +01:00
|
|
|
|
2025-07-26 19:04:34 +01:00
|
|
|
// Ensure the folders exist
|
|
|
|
|
Log.Information("Ensuring folders exist...");
|
|
|
|
|
|
|
|
|
|
string[] folders =
|
|
|
|
|
[
|
|
|
|
|
Consts.DbFolder, Consts.DatFolder, Consts.IncomingDatFolder, Consts.RepositoryFolder, Consts.IncomingRomsFolder
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
foreach(string folder in folders)
|
|
|
|
|
{
|
|
|
|
|
if(!Directory.Exists(folder))
|
|
|
|
|
{
|
|
|
|
|
Log.Debug("Creating folder: {Folder}", folder);
|
|
|
|
|
Directory.CreateDirectory(folder);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
Log.Debug("Folder already exists: {Folder}", folder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Ensure the temporary folder exists but it can also be a symlink
|
|
|
|
|
if(!Directory.Exists(Consts.TemporaryFolder) && !File.Exists(Consts.TemporaryFolder))
|
|
|
|
|
{
|
|
|
|
|
Log.Debug("Creating folder: {TemporaryFolder}", Consts.TemporaryFolder);
|
|
|
|
|
Directory.CreateDirectory(Consts.TemporaryFolder);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
Log.Debug("Folder already exists: {TemporaryFolder}", Consts.TemporaryFolder);
|
|
|
|
|
|
2025-07-26 18:44:39 +01:00
|
|
|
Log.Debug("Creating the builder...");
|
2025-07-26 19:04:34 +01:00
|
|
|
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
|
2025-07-26 17:55:02 +01:00
|
|
|
|
2025-07-26 17:59:18 +01:00
|
|
|
builder.Host.UseSerilog(); // ✅ Plug Serilog into the host
|
|
|
|
|
|
2025-07-26 17:55:02 +01:00
|
|
|
// Add services to the container.
|
|
|
|
|
builder.Services.AddRazorComponents().AddInteractiveServerComponents();
|
|
|
|
|
builder.Services.AddFluentUIComponents();
|
|
|
|
|
|
2025-07-26 18:44:39 +01:00
|
|
|
Log.Debug("Building the application...");
|
2025-07-26 19:04:34 +01:00
|
|
|
WebApplication app = builder.Build();
|
2025-07-26 17:55:02 +01:00
|
|
|
|
|
|
|
|
// Configure the HTTP request pipeline.
|
|
|
|
|
if(!app.Environment.IsDevelopment())
|
|
|
|
|
{
|
2025-07-26 19:04:34 +01:00
|
|
|
app.UseExceptionHandler("/Error", true);
|
2025-07-26 17:55:02 +01:00
|
|
|
|
|
|
|
|
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
|
|
|
|
app.UseHsts();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
app.UseAntiforgery();
|
|
|
|
|
|
|
|
|
|
app.MapStaticAssets();
|
|
|
|
|
app.MapRazorComponents<App>().AddInteractiveServerRenderMode();
|
|
|
|
|
|
2025-07-26 18:44:39 +01:00
|
|
|
Log.Debug("Running the application...");
|
2025-07-26 17:55:02 +01:00
|
|
|
app.Run();
|