Restructure solution layout by module
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				Docs CI / lint-and-preview (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	Docs CI / lint-and-preview (push) Has been cancelled
				
			This commit is contained in:
		@@ -0,0 +1,43 @@
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
using Microsoft.Extensions.DependencyInjection;
 | 
			
		||||
using Microsoft.Extensions.DependencyInjection.Extensions;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
using StellaOps.Concelier.Core;
 | 
			
		||||
using StellaOps.Concelier.Merge.Jobs;
 | 
			
		||||
using StellaOps.Concelier.Merge.Options;
 | 
			
		||||
using StellaOps.Concelier.Merge.Services;
 | 
			
		||||
 | 
			
		||||
namespace StellaOps.Concelier.Merge;
 | 
			
		||||
 | 
			
		||||
public static class MergeServiceCollectionExtensions
 | 
			
		||||
{
 | 
			
		||||
    public static IServiceCollection AddMergeModule(this IServiceCollection services, IConfiguration configuration)
 | 
			
		||||
    {
 | 
			
		||||
        ArgumentNullException.ThrowIfNull(services);
 | 
			
		||||
        ArgumentNullException.ThrowIfNull(configuration);
 | 
			
		||||
 | 
			
		||||
        services.TryAddSingleton<CanonicalHashCalculator>();
 | 
			
		||||
        services.TryAddSingleton<CanonicalMerger>();
 | 
			
		||||
        services.TryAddSingleton<AliasGraphResolver>();
 | 
			
		||||
        services.TryAddSingleton<AffectedPackagePrecedenceResolver>(sp =>
 | 
			
		||||
        {
 | 
			
		||||
            var options = configuration.GetSection("concelier:merge:precedence").Get<AdvisoryPrecedenceOptions>();
 | 
			
		||||
            return options is null ? new AffectedPackagePrecedenceResolver() : new AffectedPackagePrecedenceResolver(options);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        services.TryAddSingleton<AdvisoryPrecedenceMerger>(sp =>
 | 
			
		||||
        {
 | 
			
		||||
            var resolver = sp.GetRequiredService<AffectedPackagePrecedenceResolver>();
 | 
			
		||||
            var options = configuration.GetSection("concelier:merge:precedence").Get<AdvisoryPrecedenceOptions>();
 | 
			
		||||
            var timeProvider = sp.GetRequiredService<TimeProvider>();
 | 
			
		||||
            var logger = sp.GetRequiredService<ILogger<AdvisoryPrecedenceMerger>>();
 | 
			
		||||
            return new AdvisoryPrecedenceMerger(resolver, options, timeProvider, logger);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        services.TryAddSingleton<MergeEventWriter>();
 | 
			
		||||
        services.TryAddSingleton<AdvisoryMergeService>();
 | 
			
		||||
        services.AddTransient<MergeReconcileJob>();
 | 
			
		||||
 | 
			
		||||
        return services;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user