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
search(*keys)
click to toggle source
# File lib/terjira/issue_cli.rb, line 147 def search(*keys) search_term = client_class.search(summary: keys[0]) render_issues(search_term) 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