class Jira::Command::Link

Attributes

ticket[RW]

Public Class Methods

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

Public Instance Methods

run() click to toggle source
# File lib/jira/commands/link.rb, line 20
def run
  return if ticket.empty?
  return if metadata.empty?
  return if issue_link_type.empty?
  return if outward_ticket.empty?
  return unless invalid_ticket?

  begin
    api.post "issueLink",
      params: params,
      success: on_success,
      failure: on_failure
  rescue CommandException
  end
end

Private Instance Methods

invalid_ticket?() click to toggle source
# File lib/jira/commands/link.rb, line 84
def invalid_ticket?
  !Jira::Core.ticket?(outward_ticket)
end
metadata() click to toggle source
# File lib/jira/commands/link.rb, line 88
def metadata
  @metadata ||= api.get("issueLinkType")
end
on_failure() click to toggle source
# File lib/jira/commands/link.rb, line 76
def on_failure
  ->{ puts "No ticket linked." }
end
on_success() click to toggle source
# File lib/jira/commands/link.rb, line 69
def on_success
  ->{
    puts "Successfully linked ticket #{ticket} to"\
    " ticket #{outward_ticket}."
  }
end
outward_ticket() click to toggle source
# File lib/jira/commands/link.rb, line 80
def outward_ticket
  @outward_ticket ||= io.ask("Outward ticket:").strip
end
params() click to toggle source
# File lib/jira/commands/link.rb, line 38
def params
  {
    type: {
      name: issue_link_type[:name]
    },
    inwardIssue: {
      key: ticket
    },
    outwardIssue: {
      key: outward_ticket
    }
  }
end