diff --git a/RomRepoMgr.Blazor/Consts.cs b/RomRepoMgr.Blazor/Consts.cs new file mode 100644 index 0000000..0f12f44 --- /dev/null +++ b/RomRepoMgr.Blazor/Consts.cs @@ -0,0 +1,11 @@ +namespace RomRepoMgr.Blazor; + +public class Consts +{ + public const string DbFolder = "db"; + public const string DatFolder = "dats"; + public const string IncomingDatFolder = "incoming-dats"; + public const string RepositoryFolder = "repo"; + public const string IncomingRomsFolder = "incoming"; + public const string TemporaryFolder = "tmp"; +} \ No newline at end of file diff --git a/RomRepoMgr.Blazor/Program.cs b/RomRepoMgr.Blazor/Program.cs index cc77f6a..dffc99e 100644 --- a/RomRepoMgr.Blazor/Program.cs +++ b/RomRepoMgr.Blazor/Program.cs @@ -1,4 +1,5 @@ using Microsoft.FluentUI.AspNetCore.Components; +using RomRepoMgr.Blazor; using RomRepoMgr.Blazor.Components; using Serilog; @@ -15,8 +16,36 @@ Log.Logger = new LoggerConfiguration() Log.Information("Welcome to ROM Repository Manager!"); Log.Information("Copyright © 2020-2025 Natalia Portillo"); +// 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); + Log.Debug("Creating the builder..."); -var builder = WebApplication.CreateBuilder(args); +WebApplicationBuilder builder = WebApplication.CreateBuilder(args); builder.Host.UseSerilog(); // ✅ Plug Serilog into the host @@ -25,12 +54,12 @@ builder.Services.AddRazorComponents().AddInteractiveServerComponents(); builder.Services.AddFluentUIComponents(); Log.Debug("Building the application..."); -var app = builder.Build(); +WebApplication app = builder.Build(); // Configure the HTTP request pipeline. if(!app.Environment.IsDevelopment()) { - app.UseExceptionHandler("/Error", createScopeForErrors: true); + app.UseExceptionHandler("/Error", true); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts();