Пример #1
0
        public void Start()
        {
            var consoleMenu = new ConsoleMenu(ConsoleMenuType.StringInput);

            consoleMenu.MenuOptions.Add(new ConsoleMenuOption("Remove all my forks and close their active PR's", new Action(() =>
            {
                Console.WriteLine("Actions to execute:");

                var allPrs = _gitOctoKitHandler.GetAllMyOpenPrs().Result;

                foreach (var pr in allPrs)
                {
                    Console.WriteLine($"\tClose:\t{pr.Issue.HtmlUrl} ({pr.Issue.State})");
                }

                var myReposAll = _gitOctoKitHandler.GitHubClient.Repository.GetAllForCurrent().Result;
                var myRepos    = myReposAll.Where(t => t.Fork).ToList();

                foreach (var repo in myRepos)
                {
                    Console.WriteLine($"\tDelete:\t{repo.FullName}");
                }

                var consMenuRemoveRepos = new ConsoleMenu(ConsoleMenuType.StringInput);

                consMenuRemoveRepos.MenuOptions.Add(new ConsoleMenuOption("Yes", new Action(() =>
                {
                    foreach (var pr in allPrs)
                    {
                        Console.Write($"Closing: {pr.Issue.HtmlUrl} ");
                        var up = new PullRequestUpdate()
                        {
                            State = ItemState.Closed
                        };
                        _gitOctoKitHandler.GitHubClient.PullRequest.Update(pr.RepoOwner, pr.RepoName, pr.Issue.Number, up).Wait();
                        Console.WriteLine("Done");
                    }

                    foreach (var repo in myRepos)
                    {
                        Console.Write($"Removing: {repo.FullName} ");
                        _gitOctoKitHandler.GitHubClient.Repository.Delete(repo.Id).Wait();
                        Console.WriteLine("Done");
                    }
                })));

                consMenuRemoveRepos.MenuOptions.Add(new ConsoleMenuOption("No", new Action(() =>
                {
                })));

                Console.WriteLine();
                Console.WriteLine("Are you sure you want to execute these actions?");
                consMenuRemoveRepos.RenderMenu();
                consMenuRemoveRepos.WaitForResult();
            })));

            consoleMenu.MenuOptions.Add(new ConsoleMenuOption("Remove all my forks", new Action(() =>
            {
                Console.WriteLine("Actions to execute:");

                var myReposAll = _gitOctoKitHandler.GitHubClient.Repository.GetAllForCurrent().Result;
                var myRepos    = myReposAll.Where(t => t.Fork).ToList();

                foreach (var repo in myRepos)
                {
                    Console.WriteLine($"\tDelete:\t{repo.FullName}");
                }

                var consMenuRemoveRepos = new ConsoleMenu(ConsoleMenuType.StringInput);

                consMenuRemoveRepos.MenuOptions.Add(new ConsoleMenuOption("Yes", new Action(() =>
                {
                    foreach (var repo in myRepos)
                    {
                        Console.Write($"Removing: {repo.FullName} ");
                        _gitOctoKitHandler.GitHubClient.Repository.Delete(repo.Id).Wait();
                        Console.WriteLine("Done");
                    }
                })));

                consMenuRemoveRepos.MenuOptions.Add(new ConsoleMenuOption("No", new Action(() =>
                {
                })));

                Console.WriteLine();
                Console.WriteLine("Are you sure you want to execute these actions?");
                consMenuRemoveRepos.RenderMenu();
                consMenuRemoveRepos.WaitForResult();
            })));

            consoleMenu.MenuOptions.Add(new ConsoleMenuOption("Close all my pull requests", new Action(() =>
            {
                Console.WriteLine("Actions to execute:");

                var allPrs = _gitOctoKitHandler.GetAllMyOpenPrs().Result;

                foreach (var pr in allPrs)
                {
                    Console.WriteLine($"\tClose:\t{pr.Issue.HtmlUrl} ({pr.Issue.State})");
                }

                var consMenuRemoveRepos = new ConsoleMenu(ConsoleMenuType.StringInput);

                consMenuRemoveRepos.MenuOptions.Add(new ConsoleMenuOption("Yes", new Action(() =>
                {
                    foreach (var pr in allPrs)
                    {
                        Console.Write($"Closing: {pr.Issue.HtmlUrl} ");
                        var up = new PullRequestUpdate()
                        {
                            State = ItemState.Closed
                        };
                        _gitOctoKitHandler.GitHubClient.PullRequest.Update(pr.RepoOwner, pr.RepoName, pr.Issue.Number, up).Wait();
                        Console.WriteLine("Done");
                    }
                })));

                consMenuRemoveRepos.MenuOptions.Add(new ConsoleMenuOption("No", new Action(() =>
                {
                })));

                Console.WriteLine();
                Console.WriteLine("Are you sure you want to execute these actions?");
                consMenuRemoveRepos.RenderMenu();
                consMenuRemoveRepos.WaitForResult();
            })));

            consoleMenu.MenuOptions.Add(new ConsoleMenuOption("Exit", new Action(() =>
            {
            })));

            Console.WriteLine();
            consoleMenu.RenderMenu();
            consoleMenu.WaitForResult();
        }