using sh.actions.package_cleanup.Models; using sh.actions.package_cleanup.Service; namespace sh.actions.package_cleanup; public class Worker( ILogger logger, IConfiguration configuration, IHostApplicationLifetime appLifetime, IPackageService packageService, IGiteaPackageService giteaPackageService ) : BackgroundService { private async Task DeletePackages(List packages, CancellationToken cancellationToken = default) { if (configuration["DRY_RUN"]?.ToLower() == "true") { logger.LogInformation("Dry run enabled, not deleting packages"); return; } foreach (var giteaPackage in packages) { await giteaPackageService.DeletePackage(giteaPackage, cancellationToken); } } protected override async Task ExecuteAsync(CancellationToken cancellationToken) { var packages = await packageService.GetFilteredPackages(); Console.WriteLine($"Found {packages.Count()} packages"); var packagesToDelete = packageService.FilterPackagesToDelete(packages); Console.WriteLine($"Found {packagesToDelete.Count()} packages to delete"); await DeletePackages(packagesToDelete, cancellationToken); logger.LogInformation("Cleanup finished, stopping application"); appLifetime.StopApplication(); } }