Class: GithubWorkflow::Cli
- Inherits:
-
Thor
- Object
- Thor
- GithubWorkflow::Cli
- Includes:
- Thor::Actions
- Defined in:
- lib/github_workflow/cli.rb
Constant Summary collapse
- PROCEED_TEXT =
"Proceed? [y,yes]: ".freeze
Instance Method Summary collapse
- #cleanup ⇒ Object
- #create_and_start ⇒ Object
- #create_pr ⇒ Object
- #deploy_notes ⇒ Object
- #info ⇒ Object
- #open ⇒ Object
- #push_and_pr ⇒ Object
- #reviews ⇒ Object
- #start ⇒ Object
- #status ⇒ Object
- #trello ⇒ Object
Instance Method Details
#cleanup ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/github_workflow/cli.rb', line 91 def cleanup say_info("Checking merge status") merged_pr_branches puts "\n" if merged_pr_branches.any? say_info("Are you sure you want to delete the branches with checkmarks?") if yes?(PROCEED_TEXT) pass("Deleting Branches") merged_pr_branches.each do |branch| `git branch -D #{branch}` end else failure("Cleanup aborted") end else failure("No merged branches to delete") end end |
#create_and_start ⇒ Object
85 86 87 88 |
# File 'lib/github_workflow/cli.rb', line 85 def create_and_start ensure_github_config_present create_issue end |
#create_pr ⇒ Object
32 33 34 35 36 |
# File 'lib/github_workflow/cli.rb', line 32 def create_pr ensure_github_config_present ensure_origin_exists convert_issue_to_pr end |
#deploy_notes ⇒ Object
133 134 135 |
# File 'lib/github_workflow/cli.rb', line 133 def deploy_notes puts formatted_deploy_notes end |
#info ⇒ Object
71 72 73 74 |
# File 'lib/github_workflow/cli.rb', line 71 def info ensure_github_config_present puts get_issue(issue_number_from_branch)["body"] end |
#open ⇒ Object
77 78 79 80 81 |
# File 'lib/github_workflow/cli.rb', line 77 def open ensure_github_config_present response = JSON.parse(github_client.get("repos/#{user_and_repo}/issues/#{issue_number_from_branch}?access_token=#{oauth_token}").body) `/usr/bin/open -a "/Applications/Google Chrome.app" '#{response["html_url"]}'` end |
#push_and_pr ⇒ Object
40 41 42 43 44 |
# File 'lib/github_workflow/cli.rb', line 40 def push_and_pr ensure_github_config_present push_and_set_upstream convert_issue_to_pr end |
#reviews ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/github_workflow/cli.rb', line 114 def reviews ensure_github_config_present reviewers = get_prs_list.map { |pr| pr["requested_reviewers"].map { |r| r["login"] } }.flatten reviewer_counts = reviewers.group_by { |i| i }.map { |k, v| [k, v.count] } if reviewer_counts.any? table = Terminal::Table.new(style: { width: 50 }) do |table_rows| table_rows << ["Username", "Requested PRs Count"] table_rows << :separator reviewer_counts.each { |reviewer_count| table_rows << reviewer_count } end puts table end end |
#start ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/github_workflow/cli.rb', line 20 def start ensure_github_config_present stash checkout_master rebase_master create_branch stash_pop end |
#status ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/github_workflow/cli.rb', line 47 def status ensure_github_config_present ensure_origin_exists response = JSON.parse(github_client.get("repos/#{user_and_repo}/statuses/#{current_branch}?access_token=#{oauth_token}").body) if response.empty? alert "No statuses yet. Have you pushed your branch?" else table = Terminal::Table.new(style: { width: 80 }) do |table_rows| table_rows << %w(CI Status Description) table_rows << :separator response.map { |status| status["context"] }.uniq.map do |status| response.select { |st| st["context"] == status }.sort_by { |st| st["updated_at"] }.last end.each do |status| table_rows << %w(context state description).map { |key| status[key] } end end puts table end end |
#trello ⇒ Object
140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/github_workflow/cli.rb', line 140 def trello ensure_github_config_present ensure_trello_config_present init_trello set_trello_card create_issue_from_trello_card stash checkout_master rebase_master create_branch stash_pop end |