class Jira::Command::Log::Delete

Attributes

ticket[RW]

Public Class Methods

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

Public Instance Methods

run() click to toggle source
# File lib/jira/commands/log/delete.rb, line 21
def run
  return unless logs?
  api.delete endpoint,
    success: on_success,
    failure: on_failure
end

Private Instance Methods

description_for(log) click to toggle source
# File lib/jira/commands/log/delete.rb, line 66
def description_for(log)
  author = log['updateAuthor']['displayName']
  updated_at = Jira::Format.time(Time.parse(log['updated']))
  time_spent = log['timeSpent']
  "#{author} @ #{updated_at}: #{time_spent}"
end
endpoint() click to toggle source
# File lib/jira/commands/log/delete.rb, line 38
def endpoint
  "issue/#{ticket}/worklog/#{to_delete['id']}"
end
json() click to toggle source
# File lib/jira/commands/log/delete.rb, line 73
def json
  @json ||= api.get("issue/#{ticket}/worklog")['worklogs']
end
logs() click to toggle source
# File lib/jira/commands/log/delete.rb, line 56
def logs
  @logs ||= (
    logs = {}
    json.each do |log|
      logs[description_for(log)] = log
    end
    logs
  )
end
logs?() click to toggle source
# File lib/jira/commands/log/delete.rb, line 30
def logs?
  if json.empty?
    puts "Ticket #{ticket} has no work logged."
    return false
  end
  true
end
on_failure() click to toggle source
# File lib/jira/commands/log/delete.rb, line 46
def on_failure
  ->{ puts "No logged work deleted." }
end
on_success() click to toggle source
# File lib/jira/commands/log/delete.rb, line 42
def on_success
  ->{ puts "Successfully deleted #{to_delete['timeSpent']}." }
end
to_delete() click to toggle source
# File lib/jira/commands/log/delete.rb, line 50
def to_delete
  @to_delete ||= logs[
    io.select("Select a worklog to delete:", logs.keys)
  ]
end