Files
TinfoilVibeServer/TinfoilVibeServer/Program.cs
T
2025-11-03 16:25:07 +10:30

53 lines
1.8 KiB
C#

// File: TinfoilVibeServer/Program.cs
using LibHac.Common.Keys;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Configuration;
using TinfoilVibeServer.Config;
using TinfoilVibeServer.Models;
using TinfoilVibeServer.Services;
using TinfoilVibeServer.Persistence;
namespace TinfoilVibeServer;
internal static class Program
{
public static void Main(string[] args)
{
var host = Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, cfg) =>
{
cfg.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
cfg.AddEnvironmentVariables();
cfg.AddCommandLine(args);
})
.ConfigureServices((ctx, services) =>
{
// Configuration POCO
services.Configure<GameDirectoriesOptions>(ctx.Configuration.GetSection("GameDirectories"));
// Snapshot persistence
services.AddSingleton<ISnapshotRepository, SnapshotRepository>();
// LibHac parser
services.AddSingleton<ILibHacParser, LibHacParser>();
// Main service
services.AddHostedService<GameDirectoryWatcherService>();
KeySetHolder.KeySet = ExternalKeyReader.ReadKeyFile(ctx.Configuration.GetSection("KeySet").Get<string>());
})
.ConfigureLogging((ctx, logging) =>
{
logging.ClearProviders();
logging.AddConsole(options =>
{
options.TimestampFormat = "[yyyy-MM-dd HH:mm:ss] ";
});
})
.Build();
host.Run();
}
}