Self-Hosted Git

This commit is contained in:
Simon Martens
2025-09-30 17:04:30 +02:00
parent 2a2a292cc9
commit 8c9dc19d5b
12 changed files with 573 additions and 110 deletions

View File

@@ -4,30 +4,24 @@ using HaWeb.XMLParser;
using HaWeb.XMLTests;
using HaWeb.FileHelpers;
using Microsoft.FeatureManagement;
using System.Runtime.InteropServices;
using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.Extensions.Primitives;
var builder = WebApplication.CreateBuilder(args);
// Add additional configuration
List<string> configpaths = new List<string>();
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) {
var p = builder.Configuration.GetValue<string>("WorkingTreePathWindows") + "settings.json";
configpaths.Add(p);
builder.Configuration.AddJsonFile(p, optional: true, reloadOnChange: true);
}
else {
var p = builder.Configuration.GetValue<string>("WorkingTreePathLinux") + "settings.json";
configpaths.Add(p);
builder.Configuration.AddJsonFile(p, optional: true, reloadOnChange: true);
// Add additional configuration from Git repository
var fileStoragePath = builder.Configuration.GetValue<string>("FileStoragePath");
if (!string.IsNullOrEmpty(fileStoragePath)) {
var externalSettingsPath = Path.Combine(fileStoragePath, "GIT", "settings.json");
builder.Configuration.AddJsonFile(externalSettingsPath, optional: true, reloadOnChange: true);
}
// Create initial Data
var tS = new XMLTestService();
var XMLIS = new XMLInteractionService(builder.Configuration, tS);
var hdW = new HaDocumentWrapper(XMLIS, builder.Configuration);
var XMLFP = new XMLFileProvider(XMLIS, hdW, builder.Configuration);
var gitService = new GitService(builder.Configuration, builder.Services.BuildServiceProvider().GetService<ILogger<GitService>>());
var XMLFP = new XMLFileProvider(XMLIS, hdW, gitService, builder.Configuration);
// Add services to the container.
builder.Services.AddControllers().AddXmlSerializerFormatters();
@@ -36,6 +30,7 @@ builder.Services.AddHttpContextAccessor();
builder.Services.AddSingleton<IXMLTestService, XMLTestService>((_) => tS);
builder.Services.AddSingleton<IXMLInteractionService, XMLInteractionService>((_) => XMLIS);
builder.Services.AddSingleton<IHaDocumentWrappper, HaDocumentWrapper>((_) => hdW);
builder.Services.AddSingleton<IGitService, GitService>((_) => gitService);
builder.Services.AddSingleton<IXMLFileProvider, XMLFileProvider>(_ => XMLFP);
builder.Services.AddSingleton<WebSocketMiddleware>();
builder.Services.AddTransient<IReaderService, ReaderService>();