jira-cli 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 98c9095d9dabba5b2edb2df0aba0d887448af1df
4
- data.tar.gz: dd2ebf4eb6bfcead3fa14b3f1e810c055f29a212
3
+ metadata.gz: 83f34562705e57afd8e9b3b3879f478b57d36b39
4
+ data.tar.gz: c7ae7bec14a6ee79ec7f6798e19801795859fa32
5
5
  SHA512:
6
- metadata.gz: 702a29b1122007deb53f149417ff354fcfc9b21c38ecec14d365a22380a277e00fd3ebcdaa7f7380d64867eab74f5ba02e7a809d36db85dd5b32261ac649f945
7
- data.tar.gz: ddb3495e48300b0e7c09d60ad30b5008829ee414b615f612aa070c7bed1d2dbfd5188788b11527613c76f8cfbf3b5f47072a961faa81c6c3c0a87caf6dc60c15
6
+ metadata.gz: e1e5a4314e3407e153bdf55408bf48fc49a5124972b6b5c4dc9117ec33d1b57287d95936b9fa4f686a23b8d443c7e1d4ef7522d902cd8804cb5dc8c0451ddefa
7
+ data.tar.gz: d85dc1edfdf870f8b789446001326f961f17c1f14ade7a84e181ae670da7229972996e4a922abfda7e2a47702f34e87518cc997545f5e19926c36107fce7dac7
@@ -25,23 +25,24 @@ module Jira
25
25
 
26
26
  def process(response, options)
27
27
  raise UnauthorizedException if response.status == 401
28
- json = response.body || {}
28
+ body = response.body || {}
29
+ json = (body if body.class == Hash) || {}
29
30
  if response.success? && json['errorMessages'].nil?
30
- respond_to(options[:success], json)
31
+ respond_to(options[:success], body)
31
32
  else
32
33
  puts json['errorMessages'].join('. ') unless json['errorMessages'].nil?
33
- respond_to(options[:failure], json)
34
+ respond_to(options[:failure], body)
34
35
  end
35
- json
36
+ body
36
37
  end
37
38
 
38
- def respond_to(block, json)
39
+ def respond_to(block, body)
39
40
  return if block.nil?
40
41
  case block.arity
41
42
  when 0
42
43
  block.call
43
44
  when 1
44
- block.call(json)
45
+ block.call(body)
45
46
  end
46
47
  end
47
48
 
@@ -22,7 +22,10 @@ module Jira
22
22
  return if metadata.empty?
23
23
  return unless metadata['errorMessages'].nil?
24
24
 
25
- puts "There are no tickets for jql=#{jql}." and return if rows.empty?
25
+ if rows.empty?
26
+ puts "There are no tickets for jql=#{jql}."
27
+ return
28
+ end
26
29
  render_table(header, rows)
27
30
  end
28
31
 
@@ -36,9 +39,9 @@ module Jira
36
39
  metadata['issues'].map do |issue|
37
40
  [
38
41
  issue['key'],
39
- issue['fields']['assignee']['name'] || 'Unassigned',
40
- issue['fields']['status']['name'] || 'Unknown',
41
- truncate(issue['fields']['summary'], 45)
42
+ (issue['fields']['assignee']['name'] unless issue['fields']['assignee'].nil?) || 'Unassigned',
43
+ (issue['fields']['status']['name'] unless issue['fields']['status'].nil?) || 'Unknown',
44
+ truncate(issue['fields']['summary'] || '', 45)
42
45
  ]
43
46
  end
44
47
  end
@@ -3,6 +3,7 @@ module Jira
3
3
 
4
4
  desc "transition", "Transitions the input ticket to the next state"
5
5
  method_option :transition, aliases: "-t", type: :string, default: nil, lazy_default: "", banner: "TRANSITION"
6
+ method_option :resolution, aliases: "-r", type: :string, default: nil, lazy_default: "", banner: "RESOLUTION"
6
7
  def transition(ticket=Jira::Core.ticket)
7
8
  Command::Transition.new(ticket, options).run
8
9
  end
@@ -24,6 +25,7 @@ module Jira
24
25
  return if metadata.empty?
25
26
  return unless metadata['errorMessages'].nil?
26
27
  return if transition.nil? || transition.empty?
28
+
27
29
  api.post "issue/#{ticket}/transitions",
28
30
  params: params,
29
31
  success: on_success,
@@ -33,7 +35,10 @@ module Jira
33
35
  private
34
36
 
35
37
  def params
36
- { transition: { id: transition } }
38
+ {
39
+ transition: { id: transition[:id] },
40
+ fields: transition[:resolution?] ? { resolution: { name: resolution } } : {}
41
+ }
37
42
  end
38
43
 
39
44
  def on_success
@@ -58,14 +63,33 @@ module Jira
58
63
  @transitions ||= (
59
64
  transitions = {}
60
65
  metadata['transitions'].each do |transition|
61
- transitions[transition['to']['name']] = transition['id']
66
+ transitions[transition['to']['name']] = {
67
+ id: transition['id'],
68
+ resolution?: !!transition['fields'].fetch('resolution', {})['required']
69
+ }
62
70
  end
63
71
  transitions
64
72
  )
65
73
  end
66
74
 
67
75
  def metadata
68
- @metadata ||= api.get("issue/#{ticket}/transitions")
76
+ @metadata ||= api.get("issue/#{ticket}/transitions?expand=transitions.fields")
77
+ end
78
+
79
+ def resolution
80
+ @resolution ||= resolutions[
81
+ options['resolution'] || io.select("Resolve #{ticket} as:", resolutions.keys)
82
+ ]
83
+ end
84
+
85
+ def resolutions
86
+ @resolutions ||= (
87
+ resolutions = {}
88
+ api.get("resolution").each do |resolution|
89
+ resolutions[resolution['name']] = resolution['name']
90
+ end
91
+ resolutions
92
+ )
69
93
  end
70
94
 
71
95
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jira
4
4
 
5
- VERSION = '0.3.4'.freeze
5
+ VERSION = '0.3.5'.freeze
6
6
 
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jira-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Cheng
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-29 00:00:00.000000000 Z
11
+ date: 2016-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor