using System.Net.Http.Headers; using ForgejoReleaseSync.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var builder = Host.CreateApplicationBuilder(args); var config = AppConfigLoader.LoadConfigFromEnv(); builder.Services.AddSingleton(config); var repositoryConfig = await RepoConfigLoader.LoadConfigAsync( config.RepositoryConfigFilePath); builder.Services.AddSingleton(repositoryConfig); builder.Services.AddHttpClient(client => { client.BaseAddress = new Uri("https://api.github.com/"); client.DefaultRequestHeaders.UserAgent.ParseAdd("ForgejoReleaseSync"); client.DefaultRequestHeaders.Accept.ParseAdd("application/vnd.github+json"); }); builder.Services.AddHttpClient(client => { client.BaseAddress = new Uri(config.ForgejoInstacne); client.DefaultRequestHeaders.UserAgent.ParseAdd("ForgejoReleaseSync"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("token", config.ForgejoToken); }); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); var app = builder.Build(); using var scope = app.Services.CreateScope(); await scope.ServiceProvider .GetRequiredService() .Sync();