class Jira::Command::Transition

Attributes

options[RW]
ticket[RW]

Public Class Methods

new(ticket, options) click to toggle source
# File lib/jira/commands/transition.rb, line 18
def initialize(ticket, options)
  self.ticket = ticket
  self.options = options
end

Public Instance Methods

run() click to toggle source
# File lib/jira/commands/transition.rb, line 23
def run
  return if ticket.empty?
  return if metadata.empty?
  return unless metadata['errorMessages'].nil?
  return if transition.nil? || transition.empty?

  api.post "issue/#{ticket}/transitions",
    params:  params,
    success: on_success,
    failure: on_failure
end

Private Instance Methods

metadata() click to toggle source
# File lib/jira/commands/transition.rb, line 75
def metadata
  @metadata ||= api.get("issue/#{ticket}/transitions?expand=transitions.fields")
end
on_failure() click to toggle source
# File lib/jira/commands/transition.rb, line 48
def on_failure
  ->{ puts "Failed to transition ticket #{ticket}." }
end
on_success() click to toggle source
# File lib/jira/commands/transition.rb, line 44
def on_success
  ->{ puts "Transitioned ticket #{ticket} to #{transition_name}." }
end
params() click to toggle source
# File lib/jira/commands/transition.rb, line 37
def params
  {
    transition: { id: transition[:id] },
    fields: transition[:resolution?] ? { resolution: { name: resolution } } : {}
  }
end
resolution() click to toggle source
# File lib/jira/commands/transition.rb, line 79
def resolution
  @resolution ||= resolutions[
    options['resolution'] || io.select("Resolve #{ticket} as:", resolutions.keys)
  ]
end
resolutions() click to toggle source
# File lib/jira/commands/transition.rb, line 85
def resolutions
  @resolutions ||= (
    resolutions = {}
    api.get("resolution").each do |resolution|
      resolutions[resolution['name']] = resolution['name']
    end
    resolutions
  )
end
transition() click to toggle source
# File lib/jira/commands/transition.rb, line 56
def transition
  @transition ||= transitions[
    options['transition'] || io.select("Transition #{ticket} to:", transitions.keys)
  ]
end
transition_name() click to toggle source
# File lib/jira/commands/transition.rb, line 52
def transition_name
  transitions.invert[transition]
end
transitions() click to toggle source
# File lib/jira/commands/transition.rb, line 62
def transitions
  @transitions ||= (
    transitions = {}
    metadata['transitions'].each do |transition|
      transitions[transition['to']['name']] = {
        id: transition['id'],
        resolution?: !!transition['fields'].fetch('resolution', {})['required']
      }
    end
    transitions
  )
end