Class: Jirify::Subcommands::Issues

Inherits:
Thor
  • Object
show all
Defined in:
lib/jirify/cli/issue.rb

Instance Method Summary collapse

Instance Method Details

#assignee(issue_id) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/jirify/cli/issue.rb', line 32

def assignee(issue_id)
  issue = get_issue_or_exit issue_id

  if issue.assignee.nil?
    puts 'Unassigned'.yellow
  else
    puts issue.assignee.name
  end
end

#block(issue_id) ⇒ Object



93
94
95
96
97
98
99
100
# File 'lib/jirify/cli/issue.rb', line 93

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) ⇒ Object



166
167
168
169
170
171
172
# File 'lib/jirify/cli/issue.rb', line 166

def close(issue_id)
  issue = get_issue_or_exit issue_id
  check_assigned_to_self issue

  issue.unblock! if issue.blocked?
  issue.close!
end

#mineObject



25
26
27
28
29
# File 'lib/jirify/cli/issue.rb', line 25

def mine
  statuses = build_issue_statuses(options)
  issues = Jirify::Issue.list_mine(statuses, options[:all])
  issues.each { |issue| issue.print Config.always_verbose || options[:verbose] }
end

#review(issue_id) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/jirify/cli/issue.rb', line 148

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) ⇒ Object



133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/jirify/cli/issue.rb', line 133

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) ⇒ Object



64
65
66
67
68
# File 'lib/jirify/cli/issue.rb', line 64

def status(issue_id)
  issue = get_issue_or_exit issue_id

  puts issue.status.name
end

#take(issue_id) ⇒ Object



56
57
58
59
60
61
# File 'lib/jirify/cli/issue.rb', line 56

def take(issue_id)
  issue = get_issue_or_exit issue_id

  puts "Assigning #{issue.key} to #{Config.username}..."
  issue.assign_to_me!
end

#todo(issue_id) ⇒ Object



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/jirify/cli/issue.rb', line 116

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) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/jirify/cli/issue.rb', line 79

def transition(issue_id, transition_name)
  issue = get_issue_or_exit issue_id
  transition = issue.transitions.list.find { |t| t.name == transition_name }

  if transition.nil?
    puts "ERROR: Issue can't transition to #{transition_name}".red
    exit(0)
  end

  puts "Transitioning #{issue.key} with #{transition_name}...".green
  issue.transition! transition
end

#transitions(issue_id) ⇒ Object



71
72
73
74
75
76
# File 'lib/jirify/cli/issue.rb', line 71

def transitions(issue_id)
  issue = get_issue_or_exit issue_id

  puts 'Available transitions:'
  puts issue.transitions.names
end

#unassign(issue_id) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
# File 'lib/jirify/cli/issue.rb', line 43

def unassign(issue_id)
  issue = get_issue_or_exit issue_id

  if issue.assignee.nil?
    puts 'Issue already unassigned'.yellow
    exit(0)
  end

  puts "Previous assignee: #{issue.assignee.name}. Unassigning..."
  issue.unassign!
end

#unblock(issue_id) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
# File 'lib/jirify/cli/issue.rb', line 103

def unblock(issue_id)
  issue = get_issue_or_exit issue_id
  check_assigned_to_self issue

  if issue.blocked?
    puts 'Unblocking issue...'
    issue.unblock!
  else
    puts 'Issue wasn\'t blocked anyway :)'.green
  end
end