示例#1
0
        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);
        }
示例#2
0
        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;
            });
        }
示例#5
0
        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);
        }