jira-script 1.0.1 → 1.1.1
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 +7 -0
- data/lib/jira-script.rb +62 -3
- data/lib/jira-script/request.rb +51 -18
- data/lib/jira-script/request_exception.rb +2 -0
- metadata +10 -13
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3feb081d7f59957c7ea5ba25cd167bf7bbd16d32
|
4
|
+
data.tar.gz: 52a9080c6f29ec55952d18f63ffbbe693d6e1f57
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b9a6cf55f3bd1ff74a75ebe57624d8496cdccfed6f2631e21bb935d4cfc34ecdef5171c8e590c6c2d2e99887d2653d59624b0b638ede3ec7564b3511b60b1675
|
7
|
+
data.tar.gz: d88f545a62d9214f2ebfc58ed805e2fa763dee453fce10ec042371c2b7d1a1d70b16e3e5a610adf8a9db1f2f5d922afd95c715a7c2d2e5ec66e6b5f8f96cfac9
|
data/lib/jira-script.rb
CHANGED
@@ -46,18 +46,21 @@ class Dispatcher
|
|
46
46
|
end
|
47
47
|
|
48
48
|
# build request config
|
49
|
-
def _get_request_config(res, type)
|
49
|
+
def _get_request_config(res, type, response_node = :key)
|
50
50
|
{
|
51
51
|
user: config[:user],
|
52
52
|
password: config[:password],
|
53
53
|
host: config[:host],
|
54
54
|
api_path: config[:api_path],
|
55
|
+
headers: {},
|
56
|
+
body: {},
|
55
57
|
project: config[:project],
|
56
58
|
http_request_type: type,
|
57
59
|
resource: res,
|
58
60
|
default_issue_type: config[:default_issue_type],
|
59
61
|
default_subtask_type: config[:default_subtask_type],
|
60
|
-
verbosity: config[:verbosity]
|
62
|
+
verbosity: config[:verbosity],
|
63
|
+
response_node: response_node
|
61
64
|
}
|
62
65
|
end
|
63
66
|
|
@@ -83,6 +86,62 @@ class Dispatcher
|
|
83
86
|
# run request
|
84
87
|
request.run
|
85
88
|
end
|
89
|
+
|
90
|
+
def delete(key)
|
91
|
+
request_config = _get_request_config("issue/#{key}", :delete)
|
92
|
+
request_config[:response_node] = nil
|
93
|
+
request = Request.new(:delete, request_config)
|
94
|
+
request.run
|
95
|
+
end
|
96
|
+
|
97
|
+
def search(jql)
|
98
|
+
request_config = _get_request_config("search?jql=#{jql}", :get, :issues)
|
99
|
+
request = Request.new(:search, request_config)
|
100
|
+
|
101
|
+
# run request
|
102
|
+
request.run
|
103
|
+
end
|
104
|
+
|
105
|
+
def get(key)
|
106
|
+
request_config = _get_request_config("issue/#{key}", :get, :fields)
|
107
|
+
request = Request.new(:list, request_config)
|
108
|
+
request.run
|
109
|
+
end
|
110
|
+
|
111
|
+
def download_att(filename, url)
|
112
|
+
req = Typhoeus::Request.new(
|
113
|
+
url,
|
114
|
+
ssl_verifypeer: false,
|
115
|
+
method: :get,
|
116
|
+
userpwd: "#{config[:user]}:#{config[:password]}",
|
117
|
+
)
|
118
|
+
ret = false
|
119
|
+
req.on_complete do |response|
|
120
|
+
ret = response.success?
|
121
|
+
if response.success?
|
122
|
+
f = File.new(filename, "wb")
|
123
|
+
f.write(response.body)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
req.run
|
127
|
+
ret
|
128
|
+
end
|
129
|
+
|
130
|
+
def upload_att(key, file)
|
131
|
+
request_config = _get_request_config("issue/#{key}/attachments", :post)
|
132
|
+
request_config[:response_node] = nil
|
133
|
+
request_config[:headers] = {
|
134
|
+
'X-Atlassian-Token' => 'no-check',
|
135
|
+
'Content-Type' => 'multipart/form-data'
|
136
|
+
}
|
137
|
+
request_config[:body] = {
|
138
|
+
file: File.open(file, "r")
|
139
|
+
}
|
140
|
+
request = Request.new(:attachments, request_config)
|
141
|
+
|
142
|
+
request.upload
|
143
|
+
end
|
144
|
+
|
86
145
|
end
|
87
146
|
|
88
147
|
def self.run(&block)
|
@@ -92,4 +151,4 @@ rescue RequestException => e
|
|
92
151
|
puts e.backtrace
|
93
152
|
end
|
94
153
|
|
95
|
-
end
|
154
|
+
end
|
data/lib/jira-script/request.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'uri'
|
1
2
|
require 'json'
|
2
3
|
require 'typhoeus'
|
3
4
|
require 'jira-script/request_exception'
|
@@ -52,6 +53,7 @@ class Request
|
|
52
53
|
description: 'fields/description',
|
53
54
|
type: 'fields/issuetype/name',
|
54
55
|
assignee: 'fields/assignee/name',
|
56
|
+
reporter: 'fields/reporter/name',
|
55
57
|
estimate: 'fields/timetracking/originalEstimate',
|
56
58
|
remaining: 'fields/timetracking/remainingEstimate',
|
57
59
|
components: 'fields/components',
|
@@ -60,11 +62,11 @@ class Request
|
|
60
62
|
end
|
61
63
|
|
62
64
|
def to_json
|
63
|
-
|
65
|
+
JSON.generate(json_data.merge(config[:body]))
|
64
66
|
end
|
65
67
|
|
66
68
|
def to_s
|
67
|
-
|
69
|
+
json_data.merge(config[:body])
|
68
70
|
end
|
69
71
|
|
70
72
|
def _set_default_type
|
@@ -101,6 +103,8 @@ class Request
|
|
101
103
|
raise RequestException, "Error trying to create ticket #{fields[:summary]}: #{msg}"
|
102
104
|
elsif request_type == :update
|
103
105
|
raise RequestException, "Error trying to update ticket #{key}: #{msg}"
|
106
|
+
elsif request_type == :search
|
107
|
+
raise RequestException, "Error searching for issues: #{msg}"
|
104
108
|
end
|
105
109
|
end
|
106
110
|
|
@@ -116,36 +120,65 @@ class Request
|
|
116
120
|
end
|
117
121
|
end
|
118
122
|
|
123
|
+
def upload
|
124
|
+
ret = nil
|
125
|
+
url = [config[:host], config[:api_path], config[:resource]].join('/')
|
126
|
+
_body = self.json_data.merge(config[:body])
|
127
|
+
puts "url: #{url}" if config[:verbosity] >= 2
|
128
|
+
puts "body: #{_body}" if config[:verbosity] >= 2
|
129
|
+
|
130
|
+
Typhoeus::Request.post(
|
131
|
+
url,
|
132
|
+
ssl_verifypeer: false,
|
133
|
+
userpwd: "#{config[:user]}:#{config[:password]}",
|
134
|
+
body: _body,
|
135
|
+
headers: {'Content-Type' => 'application/x-www-form-urlencoded' }.merge(config[:headers])
|
136
|
+
)
|
137
|
+
|
138
|
+
end
|
139
|
+
|
119
140
|
def run
|
120
141
|
ret = nil
|
121
|
-
|
142
|
+
_set_default_type if [:create, :update].include?(request_type)
|
122
143
|
url = [config[:host], config[:api_path], config[:resource]].join('/')
|
123
|
-
|
124
|
-
|
144
|
+
json_str = to_json
|
145
|
+
puts "url: #{url}" if config[:verbosity] >= 2
|
146
|
+
puts "json: #{json_str}" if config[:verbosity] >= 2
|
125
147
|
|
126
148
|
req = Typhoeus::Request.new(
|
127
149
|
url,
|
128
150
|
ssl_verifypeer: false,
|
129
151
|
method: config[:http_request_type],
|
130
152
|
userpwd: "#{config[:user]}:#{config[:password]}",
|
131
|
-
|
132
|
-
|
153
|
+
body: json_str,
|
154
|
+
headers: { 'Content-Type' => 'application/json' }.merge(config[:headers])
|
133
155
|
)
|
134
156
|
req.on_complete do |response|
|
135
157
|
if response.success?
|
136
|
-
|
137
|
-
|
158
|
+
if !response.body.empty?
|
159
|
+
self.response = JSON.parse(response.body, symbolize_names: true)
|
160
|
+
else
|
161
|
+
self.response = response
|
162
|
+
end
|
163
|
+
|
164
|
+
if config[:response_node] == nil
|
165
|
+
ret = self.response
|
166
|
+
else
|
167
|
+
ret = self.response[config[:response_node]]
|
168
|
+
end
|
138
169
|
self.key = ret if request_type == :create
|
139
170
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
171
|
+
if [:create, :update].include?(request_type)
|
172
|
+
if config[:verbosity] >= 1
|
173
|
+
if fields[:parent].nil?
|
174
|
+
prefix = 'Issue'
|
175
|
+
else
|
176
|
+
prefix = ' - sub-task'
|
177
|
+
end
|
178
|
+
puts "#{prefix} #{key} updated successfully" if request_type == :update
|
179
|
+
puts "#{prefix} #{key}: '#{fields[:summary]}' created successfully" if request_type == :create
|
180
|
+
end
|
181
|
+
end
|
149
182
|
|
150
183
|
unless children.empty?
|
151
184
|
children.each do |child|
|
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jira-script
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Florin Mihalache
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2018-10-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: typhoeus
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.1'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.1'
|
30
27
|
description: A Ruby DSL script implementation to automate creating and updating many
|
@@ -36,29 +33,29 @@ extra_rdoc_files: []
|
|
36
33
|
files:
|
37
34
|
- lib/jira-script.rb
|
38
35
|
- lib/jira-script/request.rb
|
36
|
+
- lib/jira-script/request_exception.rb
|
39
37
|
homepage: http://github.com/mflorin/jira-script
|
40
38
|
licenses:
|
41
39
|
- MIT
|
40
|
+
metadata: {}
|
42
41
|
post_install_message:
|
43
42
|
rdoc_options: []
|
44
43
|
require_paths:
|
45
44
|
- lib
|
46
45
|
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
-
none: false
|
48
46
|
requirements:
|
49
|
-
- -
|
47
|
+
- - ">="
|
50
48
|
- !ruby/object:Gem::Version
|
51
49
|
version: '0'
|
52
50
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
51
|
requirements:
|
55
|
-
- -
|
52
|
+
- - ">="
|
56
53
|
- !ruby/object:Gem::Version
|
57
54
|
version: '0'
|
58
55
|
requirements: []
|
59
56
|
rubyforge_project:
|
60
|
-
rubygems_version:
|
57
|
+
rubygems_version: 2.5.2.3
|
61
58
|
signing_key:
|
62
|
-
specification_version:
|
59
|
+
specification_version: 4
|
63
60
|
summary: Jira DSL
|
64
61
|
test_files: []
|