class Jigit::StartIssueRunner

Public Instance Methods

run() click to toggle source
# File lib/jigit/commands/start_issue.rb, line 10
def run
  self
  begin
    jira_issue = @jira_api_client.fetch_jira_issue(@issue_name)
    return unless could_start_working_on_issue?(jira_issue, @issue_name)
    return unless want_to_start_working_on_issue?(jira_issue)
    put_issue_to_in_progress(jira_issue)
  rescue Jigit::JiraInvalidIssueKeyError
    ui.say "#{@issue_name} doesn't exist on JIRA, skipping..."
  rescue Jigit::JiraAPIClientError => exception
    ui.error "Error while executing issue start command: #{exception.message}"
  rescue Jigit::NetworkError => exception
    ui.error "Error while executing issue start command: #{exception.message}"
  end
end

Private Instance Methods

could_start_working_on_issue?(jira_issue, issue_name) click to toggle source
# File lib/jigit/commands/start_issue.rb, line 45
def could_start_working_on_issue?(jira_issue, issue_name)
  unless jira_issue
    ui.say("#{issue_name} doesn't exist on JIRA, skipping...")
    return false
  end

  if jira_issue.status.name == @jigitfile.in_progress_status
    ui.say("#{jira_issue.key} is already #{@jigitfile.in_progress_status}...")
    return false
  end
  return true
end
put_issue_to_in_progress(jira_issue) click to toggle source
# File lib/jigit/commands/start_issue.rb, line 28
def put_issue_to_in_progress(jira_issue)
  transition_finder = Jigit::JiraTransitionFinder.new(@jira_api_client.fetch_issue_transitions(jira_issue))
  to_in_progress_transition = transition_finder.find_transition_to(@jigitfile.in_progress_status)
  unless to_in_progress_transition
    ui.error("#{issue.key} doesn't have transition to '#{@jigitfile.in_progress_status}' status...")
    return
  end

  jira_issue.make_transition(to_in_progress_transition.id)
  ui.inform("#{@issue_name} now is '#{@jigitfile.in_progress_status}' 💪")
end
want_to_start_working_on_issue?(jira_issue) click to toggle source
# File lib/jigit/commands/start_issue.rb, line 40
def want_to_start_working_on_issue?(jira_issue)
  proceed_option = ui.ask_with_answers("Are you going to work on #{jira_issue.key}?\n", ["yes", "no"])
  proceed_option == "yes"
end