Files
ForgejoReleaseSync/Program.cs
T

34 lines
1.1 KiB
C#

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);
var client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", "ForgejoReleaseSync");
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.Timeout = TimeSpan.FromMinutes(3);
client.MaxResponseContentBufferSize = 1024 * 1024 * 1;
builder.Services.AddSingleton(client);
builder.Services.AddSingleton<ReleaseAssetDownloadService>();
builder.Services.AddSingleton<GithubService>();
builder.Services.AddSingleton<ForgejoService>();
builder.Services.AddSingleton<SyncService>();
var app = builder.Build();
using var scope = app.Services.CreateScope();
await scope.ServiceProvider
.GetRequiredService<SyncService>()
.Sync();
await app.RunAsync();