Wp2ghost/Wp2GhostUI/Program.cs

41 lines
1.6 KiB
C#
Raw Normal View History

2026-10-14 19:12:29 +02:00
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<ImporterSession>();
builder.Services.AddSingleton<PostCatalog>();
builder.Services.AddSingleton<LinkSearchService>();
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<ImporterSession>().Start(dataDir);
app.UseStaticFiles();
app.UseAntiforgery();
app.MapRazorComponents<App>().AddInteractiveServerRenderMode();
realConsole.WriteLine($"WP2Ghost-Oberfläche: {app.Configuration["Urls"]}");
realConsole.WriteLine($"Datenordner: {dataDir}");
realConsole.WriteLine("Beenden mit Strg+C.");
app.Run();