using Wp2GhostUI; using Wp2GhostUI.Components; var builder = WebApplication.CreateBuilder(args); // Die Konsole gehört dem Importer (siehe ImporterSession) — das Framework soll nicht hineinschreiben builder.Logging.ClearProviders(); builder.Logging.AddDebug(); builder.Services.AddRazorComponents().AddInteractiveServerComponents(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); var app = builder.Build(); // Datenordner: derselbe, in dem auch das Konsolenprogramm arbeitet (config.txt, ghostPosts/, images/ ...). // Reihenfolge: Einstellung "DataDir" (appsettings.json oder --DataDir=...), sonst der Ordner des // Konsolenprogramms, sonst ein eigener Ordner "data". string dataDir = app.Configuration["DataDir"] ?? ""; if (string.IsNullOrWhiteSpace(dataDir)) { string consoleDir = Path.GetFullPath(Path.Combine(app.Environment.ContentRootPath, "..", "CSharpGhostImporter", "bin", "Debug", "net8.0")); dataDir = File.Exists(Path.Combine(consoleDir, "config.txt")) ? consoleDir : Path.Combine(app.Environment.ContentRootPath, "data"); } dataDir = Path.GetFullPath(dataDir); Directory.CreateDirectory(dataDir); var realConsole = Console.Out; app.Services.GetRequiredService().Start(dataDir); app.UseStaticFiles(); app.UseAntiforgery(); app.MapRazorComponents().AddInteractiveServerRenderMode(); realConsole.WriteLine($"WP2Ghost-Oberfläche: {app.Configuration["Urls"]}"); realConsole.WriteLine($"Datenordner: {dataDir}"); realConsole.WriteLine("Beenden mit Strg+C."); app.Run();