speedflow-plugin-jira 0.2.2 → 0.3.0
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 +4 -4
- data/lib/speedflow/plugin/jira/client.rb +44 -4
- data/lib/speedflow/plugin/jira/{plugin_core.rb → plugin.rb} +35 -41
- data/lib/speedflow/plugin/jira/prompt.rb +6 -7
- data/lib/speedflow/plugin/jira/version.rb +1 -1
- data/lib/speedflow/plugin/jira.rb +2 -43
- data/spec/speedflow/plugin/jira/client_spec.rb +33 -2
- data/spec/speedflow/plugin/jira/{plugin_core_spec.rb → plugin_spec.rb} +32 -7
- data/spec/speedflow/plugin/jira_spec.rb +0 -12
- metadata +10 -12
- data/lib/speedflow/plugin/jira/configuration.rb +0 -84
- data/spec/speedflow/plugin/jira/configuration_spec.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ded6d3751a92f792b132a9b63939ac5d5d6a32e
|
4
|
+
data.tar.gz: 2e2cd3cf5c9b6a8653a75bcb2013f1398787488d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa25d85bbb3f7839c314fb26984e066d643677649f3e74e85db43b6d40a769c3f1d20f6ff2178d0589349771ef83557476ab3e56b5a20980e8e3d456d071c7f7
|
7
|
+
data.tar.gz: 689d420053f41dfc90300795cf95a427d82927e4d6d973d51240dbd3735f62f334fdae9a8048f1ef0dd4452c833cbfaca0aef17c43e54c655d8d58e70f8de46a
|
@@ -56,6 +56,7 @@ module Speedflow
|
|
56
56
|
data = IssueFormatter.to_create(project_key, title, issue_type_id)
|
57
57
|
issue.save!(data)
|
58
58
|
issue.fetch
|
59
|
+
issue
|
59
60
|
end
|
60
61
|
end
|
61
62
|
|
@@ -121,6 +122,31 @@ module Speedflow
|
|
121
122
|
safe { jira_client.Issuetype.all }
|
122
123
|
end
|
123
124
|
|
125
|
+
# Public: Issue link.
|
126
|
+
#
|
127
|
+
# issue_key - Issue key.
|
128
|
+
#
|
129
|
+
# Returns issue link.
|
130
|
+
def issue_link(issue_key)
|
131
|
+
issue_link = @config.by_config('site')
|
132
|
+
issue_link << @config.by_config('context_path')
|
133
|
+
issue_link << '/browse/'
|
134
|
+
issue_link << issue_key
|
135
|
+
issue_link
|
136
|
+
end
|
137
|
+
|
138
|
+
# Public: Issue output formatter.
|
139
|
+
#
|
140
|
+
# issue - ::JIRA::Resource::Issue
|
141
|
+
#
|
142
|
+
# Returns Hash.
|
143
|
+
def issue_output_format(issue)
|
144
|
+
{ 'issue' => {
|
145
|
+
'key' => issue.key,
|
146
|
+
'summary' => issue.fields['summary'],
|
147
|
+
'url' => issue_link(issue.key) } }
|
148
|
+
end
|
149
|
+
|
124
150
|
# Public: Safe process JIRA action.
|
125
151
|
#
|
126
152
|
# Returns nothing.
|
@@ -137,16 +163,30 @@ module Speedflow
|
|
137
163
|
|
138
164
|
# Public: Jira client.
|
139
165
|
#
|
140
|
-
# Returns JIRA::Client instance.
|
166
|
+
# Returns <::JIRA::Client> instance.
|
141
167
|
def jira_client
|
142
|
-
@jira_client ||= ::JIRA::Client.new(
|
168
|
+
@jira_client ||= ::JIRA::Client.new(auth)
|
169
|
+
end
|
170
|
+
|
171
|
+
# Public: Auth hash for JIRA.
|
172
|
+
#
|
173
|
+
# Returns hash of auth.
|
174
|
+
def auth
|
175
|
+
{
|
176
|
+
username: @config.by_config('username'),
|
177
|
+
password: @config.by_config('password'),
|
178
|
+
site: @config.by_config('site'),
|
179
|
+
context_path: @config.by_config('context_path', ''),
|
180
|
+
auth_type: @config.by_config('auth_type', :basic).to_sym,
|
181
|
+
read_timeout: @config.by_config('read_timeout', 120).to_i
|
182
|
+
}
|
143
183
|
end
|
144
184
|
|
145
185
|
# Public: Prompt.
|
146
186
|
#
|
147
|
-
# Returns
|
187
|
+
# Returns <::Speedflow::Plugin::Prompt> instance.
|
148
188
|
def prompt
|
149
|
-
@prompt ||= ::Speedflow::Plugin::
|
189
|
+
@prompt ||= ::Speedflow::Plugin::Prompt.new
|
150
190
|
end
|
151
191
|
end
|
152
192
|
end
|
@@ -1,85 +1,91 @@
|
|
1
1
|
module Speedflow
|
2
2
|
module Plugin
|
3
3
|
module Jira
|
4
|
-
# Plugin
|
5
|
-
class
|
6
|
-
# @return [Prompt] Plugin prompt.
|
7
|
-
attr_writer :prompt
|
8
|
-
|
4
|
+
# JIRA Plugin
|
5
|
+
class Plugin < Speedflow::Plugin::Abstract
|
9
6
|
# @return [Client] Plugin client.
|
10
7
|
attr_writer :client
|
11
8
|
|
12
|
-
# @return [
|
13
|
-
attr_writer :
|
9
|
+
# @return [Prompt] Plugin prompt.
|
10
|
+
attr_writer :prompt
|
14
11
|
|
15
|
-
#
|
12
|
+
# Public: Constructor
|
16
13
|
#
|
17
|
-
#
|
14
|
+
# config - Speedflow::Plugin::Configuration object.
|
15
|
+
# prompt - Speedflow::Plugin::Prompt object.
|
18
16
|
#
|
19
17
|
# Examples
|
20
18
|
#
|
21
|
-
#
|
22
|
-
#
|
19
|
+
# Manager.new(
|
20
|
+
# <Speedflow::Plugin::Configuration.new({})>,
|
21
|
+
# <Speedflow::Plugin::Prompt.new>)
|
22
|
+
# # => <Speedflow::Plugin::Abstract>
|
23
23
|
#
|
24
24
|
# Returns nothing.
|
25
|
-
def initialize(
|
26
|
-
|
25
|
+
def initialize(config, _)
|
26
|
+
super(config, Prompt.new)
|
27
27
|
end
|
28
28
|
|
29
29
|
# Public: Create issue.
|
30
30
|
#
|
31
31
|
# Returns Hash of issue.
|
32
32
|
def action_create_issue
|
33
|
-
title = config.by_required_input('title')
|
33
|
+
title = @config.by_required_input('title')
|
34
34
|
|
35
|
-
project_key = config.by_input('project')
|
36
|
-
project_key = prompt.project(client.projects) if project_key.empty?
|
35
|
+
project_key = @config.by_input('project')
|
36
|
+
project_key = @prompt.project(client.projects) if project_key.empty?
|
37
37
|
|
38
|
-
issue_type_id = config.by_input('type')
|
38
|
+
issue_type_id = @config.by_input('type')
|
39
39
|
if issue_type_id.empty?
|
40
|
-
issue_type_id = prompt.issue_type(client.issue_types)
|
40
|
+
issue_type_id = @prompt.issue_type(client.issue_types)
|
41
41
|
end
|
42
42
|
|
43
|
-
client.create_issue(project_key, title, issue_type_id)
|
43
|
+
issue = client.create_issue(project_key, title, issue_type_id)
|
44
|
+
|
45
|
+
client.issue_output_format(issue)
|
44
46
|
end
|
45
47
|
|
46
48
|
# Public: Search issue.
|
47
49
|
#
|
48
|
-
# Returns Hash
|
50
|
+
# Returns Hash.
|
49
51
|
def action_search_issue
|
50
52
|
limit = config.by_input('limit', 20)
|
51
53
|
project = config.by_input('project')
|
52
54
|
project = prompt.project(client.projects) if project.empty?
|
53
55
|
|
54
|
-
|
56
|
+
issue_key = prompt.issue do |title|
|
55
57
|
client.search_issue(project, title).take(limit.to_i)
|
56
58
|
end
|
57
59
|
|
58
|
-
|
60
|
+
prompt.ok "[JIRA] Issue found: #{issue_key}"
|
61
|
+
|
62
|
+
{ 'issue' => { 'key' => issue_key } }
|
59
63
|
end
|
60
64
|
|
61
65
|
# Public: Change issue assignee.
|
62
66
|
#
|
63
|
-
# Returns Hash
|
67
|
+
# Returns Hash.
|
64
68
|
def action_change_issue_assignee
|
65
|
-
issue_key = config.by_input('issue')
|
66
|
-
assignee_name = config.by_input('assignee')
|
69
|
+
issue_key = @config.by_input('issue')
|
70
|
+
assignee_name = @config.by_input('assignee')
|
67
71
|
|
68
|
-
issue_key = action_search_issue if issue_key.empty?
|
72
|
+
issue_key = action_search_issue['issue']['key'] if issue_key.empty?
|
69
73
|
|
70
74
|
client.update_issue_assignee(issue_key, assignee_name)
|
71
75
|
|
72
76
|
prompt.ok "[JIRA] Issue assignee changed to: #{assignee_name}"
|
77
|
+
|
78
|
+
{ 'issue' => { 'key' => issue_key, 'assignee' => assignee_name } }
|
73
79
|
end
|
74
80
|
|
75
81
|
# Public: Change issue transition.
|
76
82
|
#
|
77
|
-
# Returns Hash
|
83
|
+
# Returns Hash.
|
78
84
|
def action_change_issue_transition
|
79
85
|
issue_key = config.by_input('issue')
|
80
86
|
transition_id = config.by_input('transition')
|
81
87
|
|
82
|
-
issue_key = action_search_issue if issue_key.empty?
|
88
|
+
issue_key = action_search_issue['issue']['key'] if issue_key.empty?
|
83
89
|
|
84
90
|
if transition_id.empty?
|
85
91
|
transition_id = prompt.transition(client.issue_trans(issue_key))
|
@@ -88,13 +94,8 @@ module Speedflow
|
|
88
94
|
client.update_issue_transition(issue_key, transition_id)
|
89
95
|
|
90
96
|
prompt.ok "[JIRA] Issue transition changed to: #{transition_id}"
|
91
|
-
end
|
92
97
|
|
93
|
-
|
94
|
-
#
|
95
|
-
# Returns Configuration instance.
|
96
|
-
def config
|
97
|
-
@config ||= Configuration.new(@arguments)
|
98
|
+
{ 'issue' => { 'key' => issue_key, 'transition' => transition_id } }
|
98
99
|
end
|
99
100
|
|
100
101
|
# Public: Plugin client.
|
@@ -103,13 +104,6 @@ module Speedflow
|
|
103
104
|
def client
|
104
105
|
@client ||= Client.new(@config, @prompt)
|
105
106
|
end
|
106
|
-
|
107
|
-
# Public: Plugin prompt.
|
108
|
-
#
|
109
|
-
# Returns Prompt instance.
|
110
|
-
def prompt
|
111
|
-
@prompt ||= Prompt.new
|
112
|
-
end
|
113
107
|
end
|
114
108
|
end
|
115
109
|
end
|
@@ -5,8 +5,8 @@ module Speedflow
|
|
5
5
|
module Plugin
|
6
6
|
module Jira
|
7
7
|
# Plugin prompt
|
8
|
-
class Prompt
|
9
|
-
# @return [
|
8
|
+
class Prompt
|
9
|
+
# @return [<::Speedflow::Plugin::Prompt>] Plugin prompt.
|
10
10
|
attr_writer :prompt
|
11
11
|
|
12
12
|
# Public: Prompt title.
|
@@ -69,8 +69,7 @@ module Speedflow
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
issue(&issues) if sel_issue == :retry
|
73
|
-
ok "[JIRA] Issue found: #{sel_issue}" unless sel_issue == :retry
|
72
|
+
sel_issue = issue(&issues) if sel_issue == :retry
|
74
73
|
|
75
74
|
sel_issue
|
76
75
|
end
|
@@ -99,11 +98,11 @@ module Speedflow
|
|
99
98
|
prompt.send(method, *args, &block)
|
100
99
|
end
|
101
100
|
|
102
|
-
# Public:
|
101
|
+
# Public: Prompt.
|
103
102
|
#
|
104
|
-
# Returns ::
|
103
|
+
# Returns <::Speedflow::Plugin::Prompt> instance.
|
105
104
|
def prompt
|
106
|
-
@prompt ||= ::
|
105
|
+
@prompt ||= ::Speedflow::Plugin::Prompt.new
|
107
106
|
end
|
108
107
|
end
|
109
108
|
end
|
@@ -1,47 +1,6 @@
|
|
1
|
+
require 'speedflow'
|
1
2
|
require 'speedflow/plugin/jira/version'
|
2
3
|
require 'speedflow/plugin/jira/formatter/issue_formatter'
|
3
|
-
require 'speedflow/plugin/jira/
|
4
|
+
require 'speedflow/plugin/jira/plugin'
|
4
5
|
require 'speedflow/plugin/jira/prompt'
|
5
|
-
require 'speedflow/plugin/jira/configuration'
|
6
6
|
require 'speedflow/plugin/jira/client'
|
7
|
-
|
8
|
-
# Speedflow GEM, help you to boost your flow and keep your time.
|
9
|
-
module Speedflow
|
10
|
-
module Plugin
|
11
|
-
# Jira Speedflow plugin.
|
12
|
-
module Jira
|
13
|
-
# TODO: Move this system in the core Utils
|
14
|
-
class << self
|
15
|
-
ACTIONS = [
|
16
|
-
:action_create_issue,
|
17
|
-
:action_search_issue,
|
18
|
-
:action_change_issue_assignee,
|
19
|
-
:action_change_issue_transition
|
20
|
-
].freeze
|
21
|
-
|
22
|
-
# @return [Speedflow::Plugin::Jira.PluginCore] Plugin.
|
23
|
-
attr_writer :plugin
|
24
|
-
|
25
|
-
# Public: Magic method to route to action
|
26
|
-
#
|
27
|
-
# args - Some arguments :)
|
28
|
-
#
|
29
|
-
# Returns nothing.
|
30
|
-
def method_missing(*args)
|
31
|
-
action = args.first
|
32
|
-
|
33
|
-
raise NoMethodError, action unless ACTIONS.include? action
|
34
|
-
|
35
|
-
plugin.new(args.last).send(action)
|
36
|
-
end
|
37
|
-
|
38
|
-
# Public: Plugin.
|
39
|
-
#
|
40
|
-
# Returns Speedflow::Plugin::Jira.PluginCore instance.
|
41
|
-
def plugin
|
42
|
-
@plugin ||= PluginCore
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,13 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Speedflow::Plugin::Jira::Client do
|
4
|
+
let(:config_site) { 'https://xxx.atlassian.net' }
|
4
5
|
let(:args) do
|
5
6
|
title = { 'value' => 'test' }
|
6
7
|
assignee = { 'default' => 'julien.breux' }
|
7
|
-
{ '
|
8
|
+
config = { 'jira' => { 'site' => config_site } }
|
9
|
+
{ 'title' => title, 'assignee' => assignee, '_config' => config }
|
8
10
|
end
|
9
11
|
let(:config) do
|
10
|
-
::Speedflow::Plugin::
|
12
|
+
::Speedflow::Plugin::Configuration.new(args, 'jira')
|
11
13
|
end
|
12
14
|
let(:prompt) do
|
13
15
|
prompt = ::Speedflow::Plugin::Jira::Prompt.new
|
@@ -87,6 +89,21 @@ describe Speedflow::Plugin::Jira::Client do
|
|
87
89
|
client.issue_trans('T-1')
|
88
90
|
end
|
89
91
|
|
92
|
+
it '.issue_link' do
|
93
|
+
expect(client.issue_link('T-1'))
|
94
|
+
.to eq config_site
|
95
|
+
end
|
96
|
+
|
97
|
+
it '.issue_output_format' do
|
98
|
+
issue = double(key: 'T-1', fields: { 'summary' => 'Test' })
|
99
|
+
|
100
|
+
expected_hash = {
|
101
|
+
'issue' => { 'key' => 'T-1', 'summary' => 'Test',
|
102
|
+
'url' => "#{config_site}/browse/T-1" } }
|
103
|
+
expect(client.issue_output_format(issue))
|
104
|
+
.to eq expected_hash
|
105
|
+
end
|
106
|
+
|
90
107
|
it '.safe' do
|
91
108
|
allow(client.prompt)
|
92
109
|
.to receive(:error).with('Invalid URL')
|
@@ -108,4 +125,18 @@ describe Speedflow::Plugin::Jira::Client do
|
|
108
125
|
end
|
109
126
|
e.to raise_error(SystemExit)
|
110
127
|
end
|
128
|
+
|
129
|
+
it '.auth' do
|
130
|
+
expected_hash = {
|
131
|
+
auth_type: :basic,
|
132
|
+
context_path: '',
|
133
|
+
password: '',
|
134
|
+
read_timeout: 120,
|
135
|
+
site: 'https://xxx.atlassian.net',
|
136
|
+
username: ''
|
137
|
+
}
|
138
|
+
|
139
|
+
expect(client.auth)
|
140
|
+
.to eq expected_hash
|
141
|
+
end
|
111
142
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Speedflow::Plugin::Jira::
|
3
|
+
describe Speedflow::Plugin::Jira::Plugin do
|
4
4
|
let(:plugin) do
|
5
|
-
plugin = ::Speedflow::Plugin::Jira::
|
6
|
-
plugin.config = double
|
5
|
+
plugin = ::Speedflow::Plugin::Jira::Plugin.new(double, double)
|
7
6
|
plugin.prompt = double
|
8
7
|
plugin.client = double
|
9
8
|
plugin
|
@@ -32,11 +31,26 @@ describe Speedflow::Plugin::Jira::PluginCore do
|
|
32
31
|
.with('3')
|
33
32
|
.and_return('3')
|
34
33
|
|
34
|
+
allow(plugin.client)
|
35
|
+
.to receive(:issue_link)
|
36
|
+
.with('T-1')
|
37
|
+
.and_return('xxx')
|
38
|
+
|
39
|
+
return_object = double(key: 'T-1', fields: { 'summary' => 'Test' })
|
35
40
|
allow(plugin.client)
|
36
41
|
.to receive(:create_issue)
|
37
42
|
.with('T', 'Test', '3')
|
43
|
+
.and_return(return_object)
|
38
44
|
|
39
|
-
|
45
|
+
expected_hash = { 'foo' => 'bar' }
|
46
|
+
|
47
|
+
allow(plugin.client)
|
48
|
+
.to receive(:issue_output_format)
|
49
|
+
.with(return_object)
|
50
|
+
.and_return(expected_hash)
|
51
|
+
|
52
|
+
expect(plugin.action_create_issue)
|
53
|
+
.to eq expected_hash
|
40
54
|
end
|
41
55
|
|
42
56
|
it '.action_search_issue' do
|
@@ -53,12 +67,18 @@ describe Speedflow::Plugin::Jira::PluginCore do
|
|
53
67
|
.to receive(:issue)
|
54
68
|
.and_yield('test')
|
55
69
|
|
70
|
+
allow(plugin.prompt)
|
71
|
+
.to receive(:ok)
|
72
|
+
.with('[JIRA] Issue found: T-1')
|
73
|
+
|
56
74
|
allow(plugin.client)
|
57
75
|
.to receive(:search_issue)
|
58
76
|
.with('T', 'test')
|
59
77
|
.and_return(double(take: 'T-1'))
|
60
78
|
|
61
|
-
|
79
|
+
expected_hash = { 'issue' => { 'key' => 'T-1' } }
|
80
|
+
expect(plugin.action_search_issue)
|
81
|
+
.to eq expected_hash
|
62
82
|
end
|
63
83
|
|
64
84
|
it '.action_change_issue_assignee' do
|
@@ -80,7 +100,10 @@ describe Speedflow::Plugin::Jira::PluginCore do
|
|
80
100
|
.with('T-1', 'julien.breux')
|
81
101
|
.and_return(double(take: 'T-1'))
|
82
102
|
|
83
|
-
|
103
|
+
expected_hash = {
|
104
|
+
'issue' => { 'key' => 'T-1', 'assignee' => 'julien.breux' } }
|
105
|
+
expect(plugin.action_change_issue_assignee)
|
106
|
+
.to eq expected_hash
|
84
107
|
end
|
85
108
|
|
86
109
|
it '.action_change_issue_transition' do
|
@@ -110,6 +133,8 @@ describe Speedflow::Plugin::Jira::PluginCore do
|
|
110
133
|
.to receive(:ok)
|
111
134
|
.with('[JIRA] Issue transition changed to: 1')
|
112
135
|
|
113
|
-
|
136
|
+
expected_hash = { 'issue' => { 'key' => 'T-1', 'transition' => '1' } }
|
137
|
+
expect(plugin.action_change_issue_transition)
|
138
|
+
.to eq expected_hash
|
114
139
|
end
|
115
140
|
end
|
@@ -1,19 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Speedflow::Plugin::Jira do
|
4
|
-
let(:plugin) do
|
5
|
-
double(new: double(action_create_issue: nil))
|
6
|
-
end
|
7
|
-
|
8
4
|
it 'has a version number' do
|
9
5
|
expect(Speedflow::Plugin::Jira::VERSION).not_to be nil
|
10
6
|
end
|
11
|
-
|
12
|
-
it 'has an action catcher' do
|
13
|
-
expect { Speedflow::Plugin::Jira.action_lol }.to raise_error(NoMethodError)
|
14
|
-
|
15
|
-
Speedflow::Plugin::Jira.plugin = plugin
|
16
|
-
|
17
|
-
expect(Speedflow::Plugin::Jira.action_create_issue).to eq nil
|
18
|
-
end
|
19
7
|
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: speedflow-plugin-jira
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Breux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: speedflow
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: '0.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: '0.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: jira-ruby
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.1.17
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.1.17
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,16 +178,14 @@ files:
|
|
178
178
|
- lib/speedflow-plugin-jira.rb
|
179
179
|
- lib/speedflow/plugin/jira.rb
|
180
180
|
- lib/speedflow/plugin/jira/client.rb
|
181
|
-
- lib/speedflow/plugin/jira/configuration.rb
|
182
181
|
- lib/speedflow/plugin/jira/formatter/issue_formatter.rb
|
183
|
-
- lib/speedflow/plugin/jira/
|
182
|
+
- lib/speedflow/plugin/jira/plugin.rb
|
184
183
|
- lib/speedflow/plugin/jira/prompt.rb
|
185
184
|
- lib/speedflow/plugin/jira/version.rb
|
186
185
|
- spec/spec_helper.rb
|
187
186
|
- spec/speedflow/plugin/jira/client_spec.rb
|
188
|
-
- spec/speedflow/plugin/jira/configuration_spec.rb
|
189
187
|
- spec/speedflow/plugin/jira/formatter/issue_formatter_spec.rb
|
190
|
-
- spec/speedflow/plugin/jira/
|
188
|
+
- spec/speedflow/plugin/jira/plugin_spec.rb
|
191
189
|
- spec/speedflow/plugin/jira/prompt_spec.rb
|
192
190
|
- spec/speedflow/plugin/jira_spec.rb
|
193
191
|
homepage: https://github.com/speedflow/speedflow-plugin-jira
|
@@ -1,84 +0,0 @@
|
|
1
|
-
module Speedflow
|
2
|
-
module Plugin
|
3
|
-
module Jira
|
4
|
-
# Jira Configuration
|
5
|
-
class Configuration
|
6
|
-
CONFIG_KEY = '_config'.freeze
|
7
|
-
PLUGIN_KEY = 'jira'.freeze
|
8
|
-
|
9
|
-
# Initialize.
|
10
|
-
#
|
11
|
-
# arguments - Hash of arguments.
|
12
|
-
#
|
13
|
-
# Examples
|
14
|
-
#
|
15
|
-
# Configuration.new({})
|
16
|
-
# # => <Speedflow::Plugin::Jira::Configuration>
|
17
|
-
#
|
18
|
-
# Returns nothing.
|
19
|
-
def initialize(arguments)
|
20
|
-
@arguments = arguments
|
21
|
-
end
|
22
|
-
|
23
|
-
# Public: Auth configuration.
|
24
|
-
#
|
25
|
-
# Returns Hash of auth configuration.
|
26
|
-
def auth
|
27
|
-
{
|
28
|
-
username: by_config('username'),
|
29
|
-
password: by_config('password'),
|
30
|
-
site: by_config('site'),
|
31
|
-
context_path: by_config('context_path', '/'),
|
32
|
-
auth_type: by_config('auth_type', :basic),
|
33
|
-
read_timeout: by_config('read_timeout', 120)
|
34
|
-
}
|
35
|
-
end
|
36
|
-
|
37
|
-
# Public: Get a specific config.
|
38
|
-
#
|
39
|
-
# key - Key of config.
|
40
|
-
# default_value - Default value.
|
41
|
-
#
|
42
|
-
# Returns value of config key.
|
43
|
-
def by_config(key, default_value = '')
|
44
|
-
if @arguments.key?(CONFIG_KEY) &&
|
45
|
-
@arguments[CONFIG_KEY].key?(PLUGIN_KEY)
|
46
|
-
config = @arguments[CONFIG_KEY][PLUGIN_KEY]
|
47
|
-
end
|
48
|
-
config.key?(key) ? config[key] : default_value
|
49
|
-
end
|
50
|
-
|
51
|
-
# Public: Get an input config by key.
|
52
|
-
#
|
53
|
-
# key - Key of config.
|
54
|
-
# default_value - Default value.
|
55
|
-
#
|
56
|
-
# Returns value of input config key.
|
57
|
-
def by_input(key, default_value = '')
|
58
|
-
if @arguments.key?(key)
|
59
|
-
@arguments[key]['value'].to_s
|
60
|
-
else
|
61
|
-
default_value
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
# Public: Get an input config by key but required.
|
66
|
-
#
|
67
|
-
# key - Key of config.
|
68
|
-
# default_value - Default value.
|
69
|
-
#
|
70
|
-
# Returns value of input config key or Exception.
|
71
|
-
def by_required_input(key, default_value = '')
|
72
|
-
value = by_input(key, default_value)
|
73
|
-
|
74
|
-
# TODO: Improve communication with core for errors
|
75
|
-
if by_input(key).empty?
|
76
|
-
raise Exception, "Required value for '#{key}'."
|
77
|
-
end
|
78
|
-
|
79
|
-
value
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Speedflow::Plugin::Jira::Configuration do
|
4
|
-
let(:config) do
|
5
|
-
title = { 'value' => 'hello' }
|
6
|
-
num = { 'value' => 3 }
|
7
|
-
jira_config = { 'username' => 'foo', 'password' => 'bar', 'site' => 'baz' }
|
8
|
-
config = { 'jira' => jira_config }
|
9
|
-
args = { 'num' => num, 'title' => title, '_config' => config }
|
10
|
-
Speedflow::Plugin::Jira::Configuration.new(args)
|
11
|
-
end
|
12
|
-
|
13
|
-
it '.by_config' do
|
14
|
-
expect(config.by_config('username', 'default'))
|
15
|
-
.to eq 'foo'
|
16
|
-
end
|
17
|
-
|
18
|
-
it '.by_input' do
|
19
|
-
expect(config.by_input('title', 'default'))
|
20
|
-
.to eq 'hello'
|
21
|
-
|
22
|
-
expect(config.by_input('num'))
|
23
|
-
.to eq '3'
|
24
|
-
|
25
|
-
expect(config.by_input('notitle', 'default'))
|
26
|
-
.to eq 'default'
|
27
|
-
end
|
28
|
-
|
29
|
-
it '.by_required_input' do
|
30
|
-
expect(config.by_required_input('title', 'default'))
|
31
|
-
.to eq 'hello'
|
32
|
-
|
33
|
-
expect { config.by_required_input('notitle') }
|
34
|
-
.to raise_error(Exception)
|
35
|
-
|
36
|
-
expect { config.by_required_input('nonotitle', 'default') }
|
37
|
-
.to raise_error(Exception)
|
38
|
-
end
|
39
|
-
|
40
|
-
it '.auth' do
|
41
|
-
returned_hash = {
|
42
|
-
auth_type: :basic,
|
43
|
-
context_path: '/',
|
44
|
-
password: 'bar',
|
45
|
-
read_timeout: 120,
|
46
|
-
site: 'baz',
|
47
|
-
username: 'foo'
|
48
|
-
}
|
49
|
-
|
50
|
-
expect(config.auth)
|
51
|
-
.to eq returned_hash
|
52
|
-
end
|
53
|
-
end
|