class Terjira::IssueCLI

Public Instance Methods

assign(*keys) click to toggle source
# File lib/terjira/issue_cli.rb, line 133
def assign(*keys)
  issue = keys[0]
  assignee = keys[1]
  if assignee.nil?
    issue = client_class.find(issue)
    opts = suggest_options(required: [:assignee],
                           resouces: { issue: issue })
    assignee = opts[:assignee]
  end
  client_class.assign(issue, assignee)
  show(issue.key_value)
end
attach_file(issue, file) click to toggle source
# File lib/terjira/issue_cli.rb, line 122
def attach_file(issue, file)
  issue = client_class.attach_file(issue, file)
  render_issue_detail(issue)
end
client_class() click to toggle source
# File lib/terjira/issue_cli.rb, line 6
def client_class
  Client::Issue
end
comment(issue) click to toggle source
# File lib/terjira/issue_cli.rb, line 89
def comment(issue)
  opts = suggest_options(required: [:comment])
  issue = client_class.write_comment(issue, opts[:comment])
  render_issue_detail(issue)
end
default_status_categories() click to toggle source
# File lib/terjira/issue_cli.rb, line 175
def default_status_categories
  Client::StatusCategory.all.reject { |category| category.key =~ /done/i }.map(&:key)
end
delete(issue) click to toggle source
# File lib/terjira/issue_cli.rb, line 82
def delete(issue)
  client_class.delete(issue)
  render("Deleted")
end
edit(issue) click to toggle source
# File lib/terjira/issue_cli.rb, line 71
def edit(issue)
  return puts "Pass options to be updated. Use 'jira issue help edit' for the options." if options.blank?
  issue = client_class.find(issue)
  opts = suggest_options(resources: { issue: issue })
  suggest_related_value_options(opts)

  issue = client_class.update(issue, opts)
  render_issue_detail(issue)
end
edit_comment(issue, comment_id = '') click to toggle source
# File lib/terjira/issue_cli.rb, line 99
def edit_comment(issue, comment_id = '')
  opts = suggest_options(
    resources: { issue: issue, comment_id: comment_id },
    required: [:editable_comment]
  )

  if opts['editable_comment'].present?
    selected_comment = opts['editable_comment']['selected_comment']
    new_content = opts['editable_comment']['new_content']

    issue = client_class.edit_comment(
      issue,
      selected_comment.id,
      new_content
    )
    render_issue_detail(issue)
  else
    render("You don't have any editable comment.")
  end
end
jql(*query) click to toggle source
# File lib/terjira/issue_cli.rb, line 51
def jql(*query)
  jql = query.join(" ")
  render_issues Client::Issue.jql(jql)
end
list() click to toggle source
# File lib/terjira/issue_cli.rb, line 38
def list
  opts = suggest_options
  opts[:statusCategory] ||= default_status_categories unless opts[:status]
  opts[:assignee] ||= current_username

  issues = client_class.all(opts)
  render_issues(issues)
end
new() click to toggle source
# File lib/terjira/issue_cli.rb, line 59
def new
  opts = suggest_options(required: [:project, :summary, :issuetype])

  suggest_related_value_options(opts)

  issue = client_class.create(opts)
  render_issue_detail(issue)
end
open(issue) click to toggle source
# File lib/terjira/issue_cli.rb, line 26
def open(issue)
  open_url(issue_url(issue))
end
show(issue = nil) click to toggle source
# File lib/terjira/issue_cli.rb, line 14
def show(issue = nil)
  return invoke(:help) unless issue
  issue = client_class.find(issue)
  if issue.issuetype.name.casecmp('epic').zero?
    epic_issues = client_class.all_epic_issues(issue)
    render_issue_detail(issue, epic_issues)
  else
    render_issue_detail(issue)
  end
end
take(issue) click to toggle source
# File lib/terjira/issue_cli.rb, line 128
def take(issue)
  assign(issue, current_username)
end
trans(*args) click to toggle source
# File lib/terjira/issue_cli.rb, line 154
def trans(*args)
  issue = args.shift
  raise 'must pass issue key or id' unless issue
  status = args.join(' ') if args.present?
  issue = client_class.find(issue, expand: 'transitions.fields')

  transitions = issue.transitions
  transition = transitions.find { |t| t.name.casecmp(status.to_s).zero? }

  resources = if transition
                { status: transition, issue: issue }
              else
                { statuses: transitions, issue: issue }
              end

  opts = suggest_options(required: [:status], resources: resources)
  issue = client_class.trans(issue, opts)
  render_issue_detail(issue)
end
url(issue) click to toggle source
# File lib/terjira/issue_cli.rb, line 31
def url(issue)
  puts issue_url(issue)
end

Private Instance Methods

issue_url(issue) click to toggle source
# File lib/terjira/issue_cli.rb, line 182
def issue_url(issue)
  "#{client_class.site_url}/browse/#{issue}".gsub(/([^:])([\/]{2,})/, '\1/')
end