40 lines
1.6 KiB
C#
40 lines
1.6 KiB
C#
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();
|