예제 #1
0
        private static void Main(string[] args)
        {
            using var cancellation = new ConsoleCancellation();
            var argumentIndex    = 0;
            var username         = ConsoleHelpers.GetOrReadArgument(argumentIndex++, "Username", args);
            var token            = ConsoleHelpers.GetOrReadArgument(argumentIndex++, "Token", args);
            var appName          = ConsoleHelpers.GetOrReadArgument(argumentIndex++, "App Name", args);
            var databaseFileName = ConsoleHelpers.GetOrReadArgument(argumentIndex++, "Database file name", args);
            var fileSetName      = ConsoleHelpers.GetOrReadArgument(argumentIndex++, "File set name", args);
            var minimumInteractionIntervalStringInputInSeconds = ConsoleHelpers.GetOrReadArgument(argumentIndex, "Minimum interaction interval in seconds", args);
            var minimumInteractionInterval = TimeSpan.FromSeconds(Int32.Parse(minimumInteractionIntervalStringInputInSeconds));
            var dbContext = new FileStorage(databaseFileName);

            Console.WriteLine($"Bot has been started. {Environment.NewLine}Press CTRL+C to close");
            try
            {
                while (true)
                {
                    var api = new GitHubStorage(username, token, appName);
                    new IssueTracker(new List <ITrigger <Issue> >
                    {
                        new HelloWorldTrigger(api, dbContext, fileSetName),
                        new OrganizationLastMonthActivityTrigger(api),
                        new LastCommitActivityTrigger(api),
                        new ProtectMainBranchTrigger(api),
                    }, api).Start(cancellation.Token);
                    new PullRequestTracker(new List <ITrigger <PullRequest> > {
                        new MergeDependabotBumpsTrigger(api)
                    }, api).Start(cancellation.Token);
                    Thread.Sleep(minimumInteractionInterval);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToStringWithAllInnerExceptions());
            }
        }
예제 #2
0
 public MergeDependabotBumpsTrigger(GitHubStorage storage)
 {
     _storage = storage;
 }
예제 #3
0
 /// <summary>
 /// <para>
 /// Initializes a new <see cref="IssueTracker"/> instance.
 /// </para>
 /// <para></para>
 /// </summary>
 /// <param name="triggers">
 /// <para>A triggers.</para>
 /// <para></para>
 /// </param>
 /// <param name="storage">
 /// <para>A git hub api.</para>
 /// <para></para>
 /// </param>
 public PullRequestTracker(List <ITrigger <TContext> > triggers, GitHubStorage storage)
 {
     Storage  = storage;
     Triggers = triggers;
 }
예제 #4
0
 /// <summary>
 /// <para>
 /// Initializes a new <see cref="IssueTracker"/> instance.
 /// </para>
 /// <para></para>
 /// </summary>
 /// <param name="triggers">
 /// <para>A triggers.</para>
 /// <para></para>
 /// </param>
 /// <param name="gitHubApi">
 /// <para>A git hub api.</para>
 /// <para></para>
 /// </param>
 public IssueTracker(List <ITrigger <Issue> > triggers, GitHubStorage gitHubApi)
 {
     Storage  = gitHubApi;
     Triggers = triggers;
 }
예제 #5
0
 /// <summary>
 /// <para>
 /// Initializes a new <see cref="HelloWorldTrigger"/> instance.
 /// </para>
 /// <para></para>
 /// </summary>
 /// <param name="storage">
 /// <para>A git hub api.</para>
 /// <para></para>
 /// </param>
 /// <param name="fileStorage">
 /// <para>A file storage.</para>
 /// <para></para>
 /// </param>
 /// <param name="fileSetName">
 /// <para>A file set name.</para>
 /// <para></para>
 /// </param>
 public HelloWorldTrigger(GitHubStorage storage, FileStorage fileStorage, string fileSetName)
 {
     this._storage     = storage;
     this._fileStorage = fileStorage;
     this._fileSetName = fileSetName;
 }
예제 #6
0
 public ProtectMainBranchTrigger(GitHubStorage storage) => _storage = storage;