using Microsoft.Extensions.Logging.Console; using MoonlightServers.Daemon.Helpers; using MoonlightServers.Daemon.ServerSystem; using MoonlightServers.Daemon.ServerSystem.Implementations.Docker; using MoonlightServers.Daemon.ServerSystem.Implementations.Local; using MoonlightServers.Daemon.Services; var builder = WebApplication.CreateBuilder(args); // Configure logging builder.Logging.ClearProviders(); builder.Logging.AddConsole(options => { options.FormatterName = nameof(AppConsoleFormatter); }); builder.Logging.AddConsoleFormatter(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddDockerServices(); builder.Services.AddLocalServices(); builder.Services.AddControllers(); var app = builder.Build(); app.UseAuthorization(); app.MapControllers(); Task.Run(async () => { Console.ReadLine(); try { var factory = app.Services.GetRequiredService(); var server = await factory.CreateAsync("a0e3ddb4-2c72-4f4c-bc49-35650a4bc5c0"); await server.InitializeAsync(); Console.WriteLine($"Server: {server.State}"); Console.ReadLine(); if (server.State == ServerState.Offline) await server.StartAsync(); else await server.StopAsync(); Console.ReadLine(); await server.DisposeAsync(); } catch (Exception e) { Console.WriteLine(e); throw; } }); app.Run();