class Jirify::Subcommands::Issues
Public Instance Methods
assignee(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 71 def assignee(issue_id) issue = get_issue_or_exit issue_id if issue.assignee.nil? say 'Unassigned'.yellow else say issue.assignee.displayName end end
block(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 136 def block(issue_id) issue = get_issue_or_exit issue_id check_assigned_to_self issue issue.reopen! if issue.done? issue.stop_review! if issue.in_review? issue.block! end
close(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 209 def close(issue_id) issue = get_issue_or_exit issue_id check_assigned_to_self issue issue.unblock! if issue.blocked? issue.close! end
describe(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 48 def describe(issue_id) issue = get_issue_or_exit issue_id issue_renderer = UI::IssueRenderer.new(issue) options = {} options[:url] = true options[:summary] = true options[:assignee] = true begin say issue_renderer.as_card(options) rescue UI::WindowTooNarrow say ColorizedString['ERROR: Your terminal window is too narrow to print the sprint table!'] .white.on_red.bold end end
mine()
click to toggle source
# File lib/jirify/cli/issue.rb, line 28 def mine statuses = build_issue_statuses(options) issues = Models::Issue.list_mine(statuses, options[:all]) issues.each do |issue| if options[:key_only] say issue.key else say issue.to_s Config.always_verbose || options[:verbose] end end end
open(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 42 def open(issue_id) get_issue_or_exit issue_id unless options[:force] Launchy.open("#{Config.issue_browse_url}#{issue_id}") end
review(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 191 def review(issue_id) issue = get_issue_or_exit issue_id check_assigned_to_self issue if issue.blocked? issue.unblock! issue.start! elsif issue.todo? issue.start! elsif issue.done? issue.reopen! issue.start! end issue.start_review! end
start(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 176 def start(issue_id) issue = get_issue_or_exit issue_id check_assigned_to_self issue issue.unblock! if issue.blocked? issue.reopen! if issue.done? if issue.in_review? issue.stop_review! else issue.start! end end
status(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 107 def status(issue_id) issue = get_issue_or_exit issue_id say "Status: #{issue.status.name}" end
take(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 95 def take(issue_id) issue = get_issue_or_exit issue_id say "Assigning #{issue.key} to #{Config.username}..." issue.assign_to_me! end
todo(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 159 def todo(issue_id) issue = get_issue_or_exit issue_id check_assigned_to_self issue if issue.blocked? issue.unblock! elsif issue.in_progress? issue.stop! elsif issue.in_review? issue.stop_review! issue.stop! elsif issue.done? issue.reopen! end end
transition(issue_id, transition_name)
click to toggle source
# File lib/jirify/cli/issue.rb, line 122 def transition(issue_id, transition_name) issue = get_issue_or_exit issue_id transition = issue.transitions.find_by_name(transition_name) if transition.nil? say ColorizedString[" ERROR: Issue can't transition to #{transition_name} "].white.on_red.bold exit(0) end say "Transitioning #{issue.key} with #{transition_name}...".green issue.transition! transition end
transitions(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 114 def transitions(issue_id) issue = get_issue_or_exit issue_id say 'Available transitions:' issue.transitions.names.each { |name| say name } end
unassign(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 82 def unassign(issue_id) issue = get_issue_or_exit issue_id if issue.assignee.nil? say 'Issue already unassigned'.yellow exit(0) end say "Previous assignee: #{issue.assignee.name}. Unassigning..." issue.unassign! end
unblock(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 146 def unblock(issue_id) issue = get_issue_or_exit issue_id check_assigned_to_self issue if issue.blocked? say 'Unblocking issue...' issue.unblock! else say 'Issue wasn\'t blocked anyway :)'.green end end
Protected Instance Methods
build_issue_statuses(options)
click to toggle source
# File lib/jirify/cli/issue.rb, line 237 def build_issue_statuses(options) # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity if options[:status] statuses = [options[:status]] else statuses = [] statuses << Config.statuses['blocked'] if options[:blocked] statuses << Config.statuses['todo'] if options[:todo] statuses << Config.statuses['in_progress'] if options[:in_progress] statuses << Config.statuses['in_review'] if options[:in_review] statuses << Config.statuses['done'] if options[:closed] end statuses end
check_assigned_to_self(issue)
click to toggle source
# File lib/jirify/cli/issue.rb, line 230 def check_assigned_to_self(issue) return if issue.mine? exit(0) unless yes? 'WARNING! This issue is not assigned to you!'\ ' Are you sure you want to continue? [Y/n]:'.yellow end
get_issue_or_exit(issue_id)
click to toggle source
# File lib/jirify/cli/issue.rb, line 219 def get_issue_or_exit(issue_id) issue = Models::Issue.find_by_id(issue_id) if issue.nil? say ColorizedString['ERROR: Issue not found'].white.on_red.bold exit(0) else issue end end