public static IAutoGitBuilder AddWebHookHandlers(this IAutoGitBuilder builder, Action <AutoGitWebHookOptions> setupAction = null) { var options = new AutoGitWebHookOptions(); setupAction?.Invoke(options); builder.Services.Configure(setupAction); builder.Services.AddControllers().AddFluentValidation(f => { f.RegisterValidatorsFromAssembly(Assembly.GetExecutingAssembly()); }); options.WebHookHandlers.ForEach(h => { builder.Services.AddScoped(typeof(IWebHookHandler), h); }); builder.Services.AddHttpContextAccessor(); builder.Services.AddRouting(); builder.Services.AddScoped <IWebHookHandlerRegistry, WebHookHandlerRegistry>(); builder.Services.AddScoped <IWebHookHandlerResolver, WebHookHandlerResolver>(); builder.Services.AddScoped <IWebHookEventFactory, WebHookEventFactory>(); return(builder); }
public static IAutoGitBuilder AddReleaseNoteGenerator(this IAutoGitBuilder builder, Action <AutoGitReleaseOptions> setupAction = null) { var releaseOptions = new AutoGitReleaseOptions(); setupAction?.Invoke(releaseOptions); builder.Services.Configure(setupAction); builder.AddWebHookHandlers(options => { if (releaseOptions.ManageReleaseNotes) { options.AddHandler <ReleaseCreatedHandler>(); } }); builder.Services.AddTransient <ICommitFinder, CommitFinder>(); if (releaseOptions.ManageReleaseNotes) { builder.Services.AddTransient <IDocumentUpdater, ReleaseNoteUpdater>(); builder.Services.AddTransient <IDocumentFormatter, DefaultFormatter>(); } if (releaseOptions.ManageChangeLog) { builder.Services.AddTransient <IDocumentUpdater, ChangeLogUpdater>(); builder.Services.AddTransient <IDocumentFormatter, DefaultFormatter>(); } return(builder); }
public AutoGitBuilderExtensionsTests() { var services = new ServiceCollection(); _sut = services.AddGitHubBot(options => { }) .AddJobs(options => { }); }
public AutoGitBuilderExtensionsTests() { var services = new ServiceCollection(); _sut = services.AddGitHubBot(options => { }) .AddWebHookHandlers(options => { }) .AddReleaseNoteGenerator(options => { options.ManageChangeLog = true; options.ManageReleaseNotes = true; }); }
public static IAutoGitBuilder AddJobs(this IAutoGitBuilder builder, Action <AutoGitJobOptions> setupAction = null) { var jobOptions = new AutoGitJobOptions(); setupAction?.Invoke(jobOptions); builder.Services.Configure(setupAction); builder.Services.AddRouting(); builder.Services.AddHangfire(options => { if (jobOptions.EnableConsoleLogging) { options.UseConsole(); } options.SetDataCompatibilityLevel(CompatibilityLevel.Version_170); options.UseSimpleAssemblyNameTypeSerializer(); options.UseRecommendedSerializerSettings(); if (!string.IsNullOrWhiteSpace(jobOptions.ConnectionString)) { options.UseSqlServerStorage(jobOptions.ConnectionString, new SqlServerStorageOptions { CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), QueuePollInterval = TimeSpan.Zero, UseRecommendedIsolationLevel = true, DisableGlobalLocks = true }); return; } options.UseMemoryStorage(); }); if (jobOptions.EnableConsoleLogging) { builder.Services.AddHangfireConsoleExtensions(); } builder.Services.AddHangfireServer(); return(builder); }