Class: GithubWorkflow::Cli

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/github_workflow/cli.rb

Constant Summary collapse

PROCEED_TEXT =
"Proceed? [y,yes]: ".freeze

Instance Method Summary collapse

Instance Method Details

#cleanupObject



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/github_workflow/cli.rb', line 90

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_startObject



84
85
86
87
# File 'lib/github_workflow/cli.rb', line 84

def create_and_start
  ensure_github_config_present
  create_issue
end

#create_prObject



31
32
33
34
35
# File 'lib/github_workflow/cli.rb', line 31

def create_pr
  ensure_github_config_present
  ensure_origin_exists
  convert_issue_to_pr
end

#infoObject



70
71
72
73
# File 'lib/github_workflow/cli.rb', line 70

def info
  ensure_github_config_present
  puts get_issue(issue_number_from_branch)["body"]
end

#openObject



76
77
78
79
80
# File 'lib/github_workflow/cli.rb', line 76

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_prObject



39
40
41
42
43
# File 'lib/github_workflow/cli.rb', line 39

def push_and_pr
  ensure_github_config_present
  push_and_set_upstream
  convert_issue_to_pr
end

#startObject



19
20
21
22
23
24
25
26
# File 'lib/github_workflow/cli.rb', line 19

def start
  ensure_github_config_present
  stash
  checkout_master
  rebase_master
  create_branch
  stash_pop
end

#statusObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/github_workflow/cli.rb', line 46

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