bl 0.5.11 → 0.6.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/bl.rb +2 -0
- data/lib/bl/category.rb +4 -4
- data/lib/bl/cli.rb +20 -38
- data/lib/bl/command.rb +6 -197
- data/lib/bl/constants.rb +197 -0
- data/lib/bl/file.rb +2 -2
- data/lib/bl/gitrepo.rb +2 -2
- data/lib/bl/groups.rb +5 -5
- data/lib/bl/milestone.rb +4 -4
- data/lib/bl/notifications.rb +4 -4
- data/lib/bl/printer.rb +31 -0
- data/lib/bl/project.rb +14 -16
- data/lib/bl/recent.rb +4 -8
- data/lib/bl/requestable.rb +17 -0
- data/lib/bl/space.rb +5 -5
- data/lib/bl/type.rb +4 -4
- data/lib/bl/users.rb +10 -10
- data/lib/bl/version.rb +1 -1
- data/lib/bl/watchings.rb +8 -8
- data/lib/bl/webhooks.rb +5 -5
- data/lib/bl/wiki.rb +4 -4
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d76c1fa3d3501015e87be05a03ff5b6fe694ad9
|
4
|
+
data.tar.gz: bd1d24d7fd6740ce1275aa2fcb269a43ea1f00bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cabd93779373d7a938b5d1c0be3bb1fee721a425af260417ed176eadbc663370e514e0f7e3663a18890375694d4537f55402bd80c51d54a66a48390ff3170311
|
7
|
+
data.tar.gz: 4f2121b52394a1a77b6457b3a51e80dc2b8b7d838e1983c5dd1101f4e2f239c4bf6f6719311f1e1ea7ecac64e7b4b72f09d349f8001b5e9845244fe18865706a
|
data/lib/bl.rb
CHANGED
@@ -4,9 +4,11 @@ require 'backlog_kit'
|
|
4
4
|
require 'paint'
|
5
5
|
require 'thor'
|
6
6
|
require 'bl/version'
|
7
|
+
require 'bl/constants'
|
7
8
|
require 'bl/config'
|
8
9
|
require 'bl/requestable'
|
9
10
|
require 'bl/formatting'
|
11
|
+
require 'bl/printer'
|
10
12
|
require 'bl/command'
|
11
13
|
require 'bl/space'
|
12
14
|
require 'bl/type'
|
data/lib/bl/category.rb
CHANGED
@@ -9,14 +9,14 @@ module Bl
|
|
9
9
|
|
10
10
|
desc 'list', 'list categories'
|
11
11
|
def list
|
12
|
-
res =
|
12
|
+
res = request(:get, @url)
|
13
13
|
print_response(res)
|
14
14
|
end
|
15
15
|
|
16
16
|
desc 'add [NAME...]', 'add categories'
|
17
17
|
def add(*names)
|
18
18
|
names.each do |name|
|
19
|
-
res =
|
19
|
+
res = request(:post, @url, name: name)
|
20
20
|
puts 'category added'
|
21
21
|
print_response(res)
|
22
22
|
end
|
@@ -26,7 +26,7 @@ module Bl
|
|
26
26
|
option :name, type: :string
|
27
27
|
def update(*ids)
|
28
28
|
ids.each do |id|
|
29
|
-
res =
|
29
|
+
res = request(:patch, "#{@url}/#{id}", delete_class_options(options))
|
30
30
|
puts 'category updated'
|
31
31
|
print_response(res)
|
32
32
|
end
|
@@ -35,7 +35,7 @@ module Bl
|
|
35
35
|
desc 'delete [ID...]', 'delete categories'
|
36
36
|
def delete(*ids)
|
37
37
|
ids.each do |id|
|
38
|
-
res =
|
38
|
+
res = request(:delete, "#{@url}/#{id}")
|
39
39
|
puts 'category deleted'
|
40
40
|
print_response(res)
|
41
41
|
end
|
data/lib/bl/cli.rb
CHANGED
@@ -35,13 +35,13 @@ module Bl
|
|
35
35
|
space_id: space_id,
|
36
36
|
api_key: api_key
|
37
37
|
)
|
38
|
-
res =
|
38
|
+
res = request(:get, 'projects')
|
39
39
|
project_key = res.body[0].projectKey
|
40
40
|
config[:project_key] = project_key
|
41
41
|
config[:issue][:default][:projectId] = res.body[0].id
|
42
|
-
res =
|
42
|
+
res = request(:get, "projects/#{project_key}/issueTypes")
|
43
43
|
config[:issue][:default][:issueTypeId] = res.body[0].id
|
44
|
-
res =
|
44
|
+
res = request(:get, 'priorities')
|
45
45
|
config[:issue][:default][:priorityId] = res.body[1].id
|
46
46
|
f.write(config.to_yaml)
|
47
47
|
puts "#{filename} generated."
|
@@ -51,7 +51,7 @@ module Bl
|
|
51
51
|
desc 'count', 'count issues'
|
52
52
|
options ISSUES_PARAMS
|
53
53
|
def count
|
54
|
-
puts
|
54
|
+
puts request(:get, 'issues/count', delete_class_options(options.to_h)).body.count
|
55
55
|
end
|
56
56
|
|
57
57
|
desc 'list', 'list issues by typical ways'
|
@@ -76,20 +76,20 @@ module Bl
|
|
76
76
|
opts[:order] = "asc"
|
77
77
|
end
|
78
78
|
opts[:categoryId] = [-1] if options[:nocategory]
|
79
|
-
res =
|
80
|
-
|
79
|
+
res = request(:get, 'issues', opts)
|
80
|
+
print_response(res, :issue)
|
81
81
|
end
|
82
82
|
|
83
83
|
desc 'search', 'search issues'
|
84
84
|
options ISSUES_PARAMS
|
85
85
|
def search
|
86
|
-
res =
|
87
|
-
|
86
|
+
res = request(:get, 'issues', delete_class_options(options.to_h))
|
87
|
+
print_response(res, :issue)
|
88
88
|
end
|
89
89
|
|
90
90
|
desc 'show KEY', "show an issue's details"
|
91
91
|
def show(key)
|
92
|
-
res =
|
92
|
+
res = request(:get, "issues/#{key}")
|
93
93
|
body = printable_issues(res.body)
|
94
94
|
additional_fileds = %w(
|
95
95
|
description
|
@@ -127,7 +127,7 @@ module Bl
|
|
127
127
|
def add(*subjects)
|
128
128
|
subjects.each do |s|
|
129
129
|
issue_default_options = @config[:issue][:default]
|
130
|
-
res =
|
130
|
+
res = request(:post,
|
131
131
|
'issues',
|
132
132
|
issue_default_options.merge({summary: s}).merge(delete_class_options(options.to_h))
|
133
133
|
)
|
@@ -141,7 +141,7 @@ module Bl
|
|
141
141
|
option :comment, type: :string
|
142
142
|
def update(*keys)
|
143
143
|
keys.each do |k|
|
144
|
-
res =
|
144
|
+
res = request(:patch, "issues/#{k}", delete_class_options(options.to_h))
|
145
145
|
puts 'issue updated'
|
146
146
|
print_issue_response(printable_issues(res.body))
|
147
147
|
end
|
@@ -150,7 +150,7 @@ module Bl
|
|
150
150
|
desc 'close [KEY...]', 'close issues'
|
151
151
|
def close(*keys)
|
152
152
|
keys.each do |k|
|
153
|
-
res =
|
153
|
+
res = request(:patch, "issues/#{k}", statusId: 4)
|
154
154
|
puts '🎉 issue closed'
|
155
155
|
print_issue_response(printable_issues(res.body))
|
156
156
|
end
|
@@ -158,7 +158,7 @@ module Bl
|
|
158
158
|
|
159
159
|
desc 'edit KEY', "edit issues' description by $EDITOR"
|
160
160
|
def edit(key)
|
161
|
-
issue_description =
|
161
|
+
issue_description = request(:get, "issues/#{key}").body.description
|
162
162
|
file = Tempfile.new
|
163
163
|
file.puts(issue_description)
|
164
164
|
file.close
|
@@ -166,7 +166,7 @@ module Bl
|
|
166
166
|
file.open
|
167
167
|
system("$EDITOR #{file.path}")
|
168
168
|
new_content = file.read
|
169
|
-
|
169
|
+
request(:patch, "issues/#{key}", description: new_content)
|
170
170
|
puts "issue #{key} updated."
|
171
171
|
ensure
|
172
172
|
file.close
|
@@ -176,20 +176,20 @@ module Bl
|
|
176
176
|
|
177
177
|
desc 'statuses', 'list statuses'
|
178
178
|
def statuses
|
179
|
-
res =
|
180
|
-
|
179
|
+
res = request(:get, 'statuses')
|
180
|
+
print_response(res, :named)
|
181
181
|
end
|
182
182
|
|
183
183
|
desc 'priorities', 'list priorities'
|
184
184
|
def priorities
|
185
|
-
res =
|
186
|
-
|
185
|
+
res = request(:get, 'priorities')
|
186
|
+
print_response(res, :named)
|
187
187
|
end
|
188
188
|
|
189
189
|
desc 'resolutions', 'list resolutions'
|
190
190
|
def resolutions
|
191
|
-
res =
|
192
|
-
|
191
|
+
res = request(:get, 'resolutions')
|
192
|
+
print_response(res, :named)
|
193
193
|
end
|
194
194
|
|
195
195
|
desc 'roles', 'list roles'
|
@@ -239,23 +239,5 @@ module Bl
|
|
239
239
|
desc 'wiki SUBCOMMAND ...ARGS', 'manage wikis'
|
240
240
|
subcommand 'wiki', Wiki
|
241
241
|
|
242
|
-
private
|
243
|
-
|
244
|
-
def print_issue_response(res)
|
245
|
-
puts formatter.render(res, fields: ISSUE_FIELDS)
|
246
|
-
end
|
247
|
-
|
248
|
-
def printable_issues(ary)
|
249
|
-
ary = Array(ary)
|
250
|
-
ary.each do |v|
|
251
|
-
v.issueType = v.issueType.name
|
252
|
-
v.assignee = v.assignee.name if v.assignee
|
253
|
-
v.status = v.status.name
|
254
|
-
v.priority = v.priority.name
|
255
|
-
v.created = format_datetime(v.created)
|
256
|
-
v.updated = format_datetime(v.updated)
|
257
|
-
end
|
258
|
-
ary
|
259
|
-
end
|
260
242
|
end
|
261
243
|
end
|
data/lib/bl/command.rb
CHANGED
@@ -2,204 +2,9 @@ module Bl
|
|
2
2
|
class Command < Thor
|
3
3
|
include Bl::Requestable
|
4
4
|
include Bl::Formatting
|
5
|
+
include Bl::Printer
|
5
6
|
class_option :format, type: :string, default: 'table', desc: 'set output format'
|
6
7
|
|
7
|
-
ACTIVITY_TYPES = {
|
8
|
-
1 => 'Issue Created',
|
9
|
-
2 => 'Issue Updated',
|
10
|
-
3 => 'Issue Commented',
|
11
|
-
4 => 'Issue Deleted',
|
12
|
-
5 => 'Wiki Created',
|
13
|
-
6 => 'Wiki Updated',
|
14
|
-
7 => 'Wiki Deleted',
|
15
|
-
8 => 'File Added',
|
16
|
-
9 => 'File Updated',
|
17
|
-
10 => 'File Deleted',
|
18
|
-
11 => 'SVN Committed',
|
19
|
-
12 => 'Git Pushed',
|
20
|
-
13 => 'Git Repository Created',
|
21
|
-
14 => 'Issue Multi Updated',
|
22
|
-
15 => 'Project User Added',
|
23
|
-
16 => 'Project User Deleted',
|
24
|
-
17 => 'Comment Notification Added',
|
25
|
-
18 => 'Pull Request Added',
|
26
|
-
19 => 'Pull Request Updated',
|
27
|
-
20 => 'Comment Added on Pull Request'
|
28
|
-
}
|
29
|
-
CATEGORY_FIELDS = %i(id name displayOrder)
|
30
|
-
FILE_FIELDS = %i(id type dir name size created updated)
|
31
|
-
GIT_REPO_FIELDS = %i(
|
32
|
-
id
|
33
|
-
projectId
|
34
|
-
name
|
35
|
-
sshUrl
|
36
|
-
pushedAt
|
37
|
-
created
|
38
|
-
updated
|
39
|
-
)
|
40
|
-
ISSUE_BASE_ATTRIBUTES = {
|
41
|
-
summary: :string,
|
42
|
-
parentIssueId: :numeric,
|
43
|
-
description: :string,
|
44
|
-
statusId: :numeric,
|
45
|
-
resolutionId: :numeric,
|
46
|
-
dueDate: :string,
|
47
|
-
issueTypeId: :numeric,
|
48
|
-
categoryId: :array,
|
49
|
-
versionId: :array,
|
50
|
-
milestoneId: :array,
|
51
|
-
priorityId: :numeric,
|
52
|
-
assigneeId: :numeric
|
53
|
-
}
|
54
|
-
ISSUE_FIELDS = %i(
|
55
|
-
issueType
|
56
|
-
issueKey
|
57
|
-
summary
|
58
|
-
assignee
|
59
|
-
status
|
60
|
-
priority
|
61
|
-
startDate
|
62
|
-
dueDate
|
63
|
-
created
|
64
|
-
updated
|
65
|
-
)
|
66
|
-
ISSUES_PARAMS = {
|
67
|
-
projectId: :array,
|
68
|
-
issueTypeId: :array,
|
69
|
-
categoryId: :array,
|
70
|
-
versionId: :array,
|
71
|
-
milestoneId: :array,
|
72
|
-
statusId: :array,
|
73
|
-
priorityId: :array,
|
74
|
-
assigneeId: :array,
|
75
|
-
createdUserId: :array,
|
76
|
-
resolutionId: :array,
|
77
|
-
parentChild: :numeric,
|
78
|
-
attachment: :boolean,
|
79
|
-
sharedFile: :boolean,
|
80
|
-
sort: :string,
|
81
|
-
order: :string,
|
82
|
-
offset: :numeric,
|
83
|
-
count: :numeric,
|
84
|
-
createdSince: :string,
|
85
|
-
createUntil: :string,
|
86
|
-
updatedSince: :string,
|
87
|
-
updatedUntil: :string,
|
88
|
-
startDateSince: :string,
|
89
|
-
startDateUntil: :string,
|
90
|
-
dueDateSince: :string,
|
91
|
-
dueDateUntil: :string,
|
92
|
-
id: :array,
|
93
|
-
parentIssueId: :array,
|
94
|
-
keyword: :string
|
95
|
-
}
|
96
|
-
MILESTONE_FIELDS = %i(id projectId name description startDate releaseDueDate archived)
|
97
|
-
MILESTONE_PARAMS = {
|
98
|
-
description: :string,
|
99
|
-
startDate: :string,
|
100
|
-
releaseDueDate: :string
|
101
|
-
}
|
102
|
-
PROJECT_FIELDS = %i(
|
103
|
-
id
|
104
|
-
projectKey
|
105
|
-
name
|
106
|
-
chartEnabled
|
107
|
-
subtaskingEnabled
|
108
|
-
projectLeaderCanEditProjectLeader
|
109
|
-
textFormattingRule
|
110
|
-
archived
|
111
|
-
)
|
112
|
-
PROJECT_PARAMS = {
|
113
|
-
name: :string,
|
114
|
-
key: :string,
|
115
|
-
chartEnabled: :boolean,
|
116
|
-
projectLeaderCanEditProjectLeader: :boolean,
|
117
|
-
subtaskingEnabled: :boolean,
|
118
|
-
textFormattingRule: :boolean
|
119
|
-
}
|
120
|
-
ROLES = [
|
121
|
-
{id: 1, name: 'Administrator'},
|
122
|
-
{id: 2, name: 'Normal User'},
|
123
|
-
{id: 3, name: 'Reporter'},
|
124
|
-
{id: 4, name: 'Viewer'},
|
125
|
-
{id: 5, name: 'Guest Reporter'},
|
126
|
-
{id: 6, name: 'Guest Viewer'}
|
127
|
-
]
|
128
|
-
SPACE_DISK_USAGE = %i(
|
129
|
-
capacity
|
130
|
-
issue
|
131
|
-
wiki
|
132
|
-
file
|
133
|
-
subversion
|
134
|
-
git
|
135
|
-
)
|
136
|
-
SPACE_DISK_USAGE_DETAILS_FIELDS = %i(
|
137
|
-
projectId
|
138
|
-
issue
|
139
|
-
wiki
|
140
|
-
file
|
141
|
-
subversion
|
142
|
-
git
|
143
|
-
)
|
144
|
-
SPACE_FIELDS = %i(
|
145
|
-
spaceKey
|
146
|
-
name
|
147
|
-
ownerId
|
148
|
-
lang
|
149
|
-
timezone
|
150
|
-
reportSendTime
|
151
|
-
textFormattingRule
|
152
|
-
created
|
153
|
-
updated
|
154
|
-
)
|
155
|
-
SPACE_NOTIFICATION_FIELDS = %i(
|
156
|
-
content
|
157
|
-
updated
|
158
|
-
)
|
159
|
-
TYPE_COLORS = %w(
|
160
|
-
#e30000
|
161
|
-
#934981
|
162
|
-
#814fbc
|
163
|
-
#007e9a
|
164
|
-
#ff3265
|
165
|
-
#666665
|
166
|
-
#990000
|
167
|
-
#2779ca
|
168
|
-
#7ea800
|
169
|
-
#ff9200
|
170
|
-
)
|
171
|
-
USER_FIELDS = %i(
|
172
|
-
id
|
173
|
-
userId
|
174
|
-
name
|
175
|
-
roleType
|
176
|
-
lang
|
177
|
-
mailAddress
|
178
|
-
)
|
179
|
-
USER_PARAMS = {
|
180
|
-
password: :string,
|
181
|
-
name: :string,
|
182
|
-
mailAddress: :string,
|
183
|
-
roleType: :numeric
|
184
|
-
}
|
185
|
-
WATCHINGS_PARAMS = {
|
186
|
-
order: :string,
|
187
|
-
sort: :string,
|
188
|
-
count: :numeric,
|
189
|
-
offset: :numeric,
|
190
|
-
resourceAlreadyRead: :boolean,
|
191
|
-
issueId: :array
|
192
|
-
}
|
193
|
-
WEBHOOK_FIELDS = %i(id name description created updated)
|
194
|
-
WEBHOOK_PARAMS = {
|
195
|
-
name: :string,
|
196
|
-
description: :string,
|
197
|
-
hookUrl: :string,
|
198
|
-
allEvent: :boolean,
|
199
|
-
activityTypeIds: :array
|
200
|
-
}
|
201
|
-
WIKI_FIELDS = %i(id projectId name created updated)
|
202
|
-
|
203
8
|
protected
|
204
9
|
|
205
10
|
def delete_class_options(h)
|
@@ -209,7 +14,11 @@ module Bl
|
|
209
14
|
end
|
210
15
|
|
211
16
|
def format_datetime(str)
|
212
|
-
DateTime.parse(str).strftime('%Y-%m-%d %H:%M')
|
17
|
+
DateTime.parse(str).strftime('%Y-%m-%d %H:%M') if str
|
18
|
+
end
|
19
|
+
|
20
|
+
def format_date(str)
|
21
|
+
Date.parse(str).strftime('%Y-%m-%d') if str
|
213
22
|
end
|
214
23
|
end
|
215
24
|
end
|
data/lib/bl/constants.rb
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
module Bl
|
2
|
+
ACTIVITY_TYPES = {
|
3
|
+
1 => 'Issue Created',
|
4
|
+
2 => 'Issue Updated',
|
5
|
+
3 => 'Issue Commented',
|
6
|
+
4 => 'Issue Deleted',
|
7
|
+
5 => 'Wiki Created',
|
8
|
+
6 => 'Wiki Updated',
|
9
|
+
7 => 'Wiki Deleted',
|
10
|
+
8 => 'File Added',
|
11
|
+
9 => 'File Updated',
|
12
|
+
10 => 'File Deleted',
|
13
|
+
11 => 'SVN Committed',
|
14
|
+
12 => 'Git Pushed',
|
15
|
+
13 => 'Git Repository Created',
|
16
|
+
14 => 'Issue Multi Updated',
|
17
|
+
15 => 'Project User Added',
|
18
|
+
16 => 'Project User Deleted',
|
19
|
+
17 => 'Comment Notification Added',
|
20
|
+
18 => 'Pull Request Added',
|
21
|
+
19 => 'Pull Request Updated',
|
22
|
+
20 => 'Comment Added on Pull Request'
|
23
|
+
}
|
24
|
+
CATEGORY_FIELDS = %i(id name displayOrder)
|
25
|
+
FILE_FIELDS = %i(id type dir name size created updated)
|
26
|
+
GIT_REPO_FIELDS = %i(
|
27
|
+
id
|
28
|
+
projectId
|
29
|
+
name
|
30
|
+
sshUrl
|
31
|
+
pushedAt
|
32
|
+
created
|
33
|
+
updated
|
34
|
+
)
|
35
|
+
ISSUE_BASE_ATTRIBUTES = {
|
36
|
+
summary: :string,
|
37
|
+
parentIssueId: :numeric,
|
38
|
+
description: :string,
|
39
|
+
statusId: :numeric,
|
40
|
+
resolutionId: :numeric,
|
41
|
+
dueDate: :string,
|
42
|
+
issueTypeId: :numeric,
|
43
|
+
categoryId: :array,
|
44
|
+
versionId: :array,
|
45
|
+
milestoneId: :array,
|
46
|
+
priorityId: :numeric,
|
47
|
+
assigneeId: :numeric
|
48
|
+
}
|
49
|
+
ISSUE_FIELDS = %i(
|
50
|
+
issueType
|
51
|
+
issueKey
|
52
|
+
summary
|
53
|
+
assignee
|
54
|
+
status
|
55
|
+
priority
|
56
|
+
startDate
|
57
|
+
dueDate
|
58
|
+
created
|
59
|
+
updated
|
60
|
+
)
|
61
|
+
ISSUES_PARAMS = {
|
62
|
+
projectId: :array,
|
63
|
+
issueTypeId: :array,
|
64
|
+
categoryId: :array,
|
65
|
+
versionId: :array,
|
66
|
+
milestoneId: :array,
|
67
|
+
statusId: :array,
|
68
|
+
priorityId: :array,
|
69
|
+
assigneeId: :array,
|
70
|
+
createdUserId: :array,
|
71
|
+
resolutionId: :array,
|
72
|
+
parentChild: :numeric,
|
73
|
+
attachment: :boolean,
|
74
|
+
sharedFile: :boolean,
|
75
|
+
sort: :string,
|
76
|
+
order: :string,
|
77
|
+
offset: :numeric,
|
78
|
+
count: :numeric,
|
79
|
+
createdSince: :string,
|
80
|
+
createUntil: :string,
|
81
|
+
updatedSince: :string,
|
82
|
+
updatedUntil: :string,
|
83
|
+
startDateSince: :string,
|
84
|
+
startDateUntil: :string,
|
85
|
+
dueDateSince: :string,
|
86
|
+
dueDateUntil: :string,
|
87
|
+
id: :array,
|
88
|
+
parentIssueId: :array,
|
89
|
+
keyword: :string
|
90
|
+
}
|
91
|
+
MILESTONE_FIELDS = %i(id projectId name description startDate releaseDueDate archived)
|
92
|
+
MILESTONE_PARAMS = {
|
93
|
+
description: :string,
|
94
|
+
startDate: :string,
|
95
|
+
releaseDueDate: :string
|
96
|
+
}
|
97
|
+
PROJECT_FIELDS = %i(
|
98
|
+
id
|
99
|
+
projectKey
|
100
|
+
name
|
101
|
+
chartEnabled
|
102
|
+
subtaskingEnabled
|
103
|
+
projectLeaderCanEditProjectLeader
|
104
|
+
textFormattingRule
|
105
|
+
archived
|
106
|
+
)
|
107
|
+
PROJECT_PARAMS = {
|
108
|
+
name: :string,
|
109
|
+
key: :string,
|
110
|
+
chartEnabled: :boolean,
|
111
|
+
projectLeaderCanEditProjectLeader: :boolean,
|
112
|
+
subtaskingEnabled: :boolean,
|
113
|
+
textFormattingRule: :boolean
|
114
|
+
}
|
115
|
+
ROLES = [
|
116
|
+
{id: 1, name: 'Administrator'},
|
117
|
+
{id: 2, name: 'Normal User'},
|
118
|
+
{id: 3, name: 'Reporter'},
|
119
|
+
{id: 4, name: 'Viewer'},
|
120
|
+
{id: 5, name: 'Guest Reporter'},
|
121
|
+
{id: 6, name: 'Guest Viewer'}
|
122
|
+
]
|
123
|
+
SPACE_DISK_USAGE = %i(
|
124
|
+
capacity
|
125
|
+
issue
|
126
|
+
wiki
|
127
|
+
file
|
128
|
+
subversion
|
129
|
+
git
|
130
|
+
)
|
131
|
+
SPACE_DISK_USAGE_DETAILS_FIELDS = %i(
|
132
|
+
projectId
|
133
|
+
issue
|
134
|
+
wiki
|
135
|
+
file
|
136
|
+
subversion
|
137
|
+
git
|
138
|
+
)
|
139
|
+
SPACE_FIELDS = %i(
|
140
|
+
spaceKey
|
141
|
+
name
|
142
|
+
ownerId
|
143
|
+
lang
|
144
|
+
timezone
|
145
|
+
reportSendTime
|
146
|
+
textFormattingRule
|
147
|
+
created
|
148
|
+
updated
|
149
|
+
)
|
150
|
+
SPACE_NOTIFICATION_FIELDS = %i(
|
151
|
+
content
|
152
|
+
updated
|
153
|
+
)
|
154
|
+
TYPE_COLORS = %w(
|
155
|
+
#e30000
|
156
|
+
#934981
|
157
|
+
#814fbc
|
158
|
+
#007e9a
|
159
|
+
#ff3265
|
160
|
+
#666665
|
161
|
+
#990000
|
162
|
+
#2779ca
|
163
|
+
#7ea800
|
164
|
+
#ff9200
|
165
|
+
)
|
166
|
+
USER_FIELDS = %i(
|
167
|
+
id
|
168
|
+
userId
|
169
|
+
name
|
170
|
+
roleType
|
171
|
+
lang
|
172
|
+
mailAddress
|
173
|
+
)
|
174
|
+
USER_PARAMS = {
|
175
|
+
password: :string,
|
176
|
+
name: :string,
|
177
|
+
mailAddress: :string,
|
178
|
+
roleType: :numeric
|
179
|
+
}
|
180
|
+
WATCHINGS_PARAMS = {
|
181
|
+
order: :string,
|
182
|
+
sort: :string,
|
183
|
+
count: :numeric,
|
184
|
+
offset: :numeric,
|
185
|
+
resourceAlreadyRead: :boolean,
|
186
|
+
issueId: :array
|
187
|
+
}
|
188
|
+
WEBHOOK_FIELDS = %i(id name description created updated)
|
189
|
+
WEBHOOK_PARAMS = {
|
190
|
+
name: :string,
|
191
|
+
description: :string,
|
192
|
+
hookUrl: :string,
|
193
|
+
allEvent: :boolean,
|
194
|
+
activityTypeIds: :array
|
195
|
+
}
|
196
|
+
WIKI_FIELDS = %i(id projectId name created updated)
|
197
|
+
end
|
data/lib/bl/file.rb
CHANGED
@@ -8,14 +8,14 @@ module Bl
|
|
8
8
|
|
9
9
|
desc 'list PATH', 'list files on PATH'
|
10
10
|
def list(path = '')
|
11
|
-
res =
|
11
|
+
res = request(:get, "#{@url}/files/metadata/#{path}")
|
12
12
|
print_response(res)
|
13
13
|
end
|
14
14
|
|
15
15
|
desc 'get [ID...]', 'get files'
|
16
16
|
def get(*ids)
|
17
17
|
ids.each do |id|
|
18
|
-
res =
|
18
|
+
res = request(:get, "#{@url}/files/#{id}")
|
19
19
|
f = ::File.new(res.body.filename, 'w')
|
20
20
|
f.write(res.body.content)
|
21
21
|
f.close
|
data/lib/bl/gitrepo.rb
CHANGED
@@ -9,13 +9,13 @@ module Bl
|
|
9
9
|
|
10
10
|
desc 'list', 'list git repositories'
|
11
11
|
def list
|
12
|
-
res =
|
12
|
+
res = request(:get, @url)
|
13
13
|
print_response(res)
|
14
14
|
end
|
15
15
|
|
16
16
|
desc 'show ID', 'show a git repository'
|
17
17
|
def show(id)
|
18
|
-
res =
|
18
|
+
res = request(:get, "#{@url}/#{id}")
|
19
19
|
puts formatter.render(res.body, fields: GIT_REPO_FIELDS, vertical: true)
|
20
20
|
end
|
21
21
|
|
data/lib/bl/groups.rb
CHANGED
@@ -10,20 +10,20 @@ module Bl
|
|
10
10
|
desc 'list', ''
|
11
11
|
options order: :string, offset: :numeric, count: :numeric
|
12
12
|
def list
|
13
|
-
res =
|
13
|
+
res = request(:get, @url, options.to_h)
|
14
14
|
puts formatter.render(res.body, fields: %i(id name))
|
15
15
|
end
|
16
16
|
|
17
17
|
desc 'show GROUP_ID', ''
|
18
18
|
def show(id)
|
19
|
-
res =
|
19
|
+
res = request(:get, "#{@url}/#{id}")
|
20
20
|
puts formatter.render(res.body.members, fields: USER_FIELDS)
|
21
21
|
end
|
22
22
|
|
23
23
|
desc 'add GROUP_NAME', ''
|
24
24
|
options members: :array
|
25
25
|
def add(name)
|
26
|
-
res =
|
26
|
+
res = request(:post, @url, {name: name}.merge(delete_class_options(options)))
|
27
27
|
puts 'group added'
|
28
28
|
print_group_and_members(res.body)
|
29
29
|
end
|
@@ -31,14 +31,14 @@ module Bl
|
|
31
31
|
desc 'update GROUP_ID', ''
|
32
32
|
options name: :string, members: :array
|
33
33
|
def update(id)
|
34
|
-
res =
|
34
|
+
res = request(:patch, "#{@url}/#{id}", delete_class_options(options.to_h))
|
35
35
|
puts 'group updated'
|
36
36
|
print_group_and_members(res.body)
|
37
37
|
end
|
38
38
|
|
39
39
|
desc 'delete GROUP_ID', ''
|
40
40
|
def delete(id)
|
41
|
-
res =
|
41
|
+
res = request(:delete, "#{@url}/#{id}")
|
42
42
|
puts 'group deleted'
|
43
43
|
print_group_and_members(res.body)
|
44
44
|
end
|
data/lib/bl/milestone.rb
CHANGED
@@ -10,7 +10,7 @@ module Bl
|
|
10
10
|
desc 'list', 'list milestones'
|
11
11
|
option :all
|
12
12
|
def list
|
13
|
-
res =
|
13
|
+
res = request(:get, @url)
|
14
14
|
if options[:all]
|
15
15
|
else
|
16
16
|
res.body.select! { |m| m.archived == false } unless options[:all]
|
@@ -22,7 +22,7 @@ module Bl
|
|
22
22
|
options MILESTONE_PARAMS
|
23
23
|
def add(*names)
|
24
24
|
names.each do |name|
|
25
|
-
res =
|
25
|
+
res = request(:post,
|
26
26
|
@url,
|
27
27
|
name: name,
|
28
28
|
description: options[:description],
|
@@ -39,7 +39,7 @@ module Bl
|
|
39
39
|
options MILESTONE_PARAMS
|
40
40
|
def update(*ids)
|
41
41
|
ids.each do |id|
|
42
|
-
res =
|
42
|
+
res = request(:patch, "#{@url}/#{id}", delete_class_options(options))
|
43
43
|
puts 'milestone updated'
|
44
44
|
print_response(res)
|
45
45
|
end
|
@@ -48,7 +48,7 @@ module Bl
|
|
48
48
|
desc 'delete [ID...]', 'delete milestones'
|
49
49
|
def delete(*ids)
|
50
50
|
ids.each do |id|
|
51
|
-
res =
|
51
|
+
res = request(:delete, "#{@url}/#{id}")
|
52
52
|
puts 'milestone deleted'
|
53
53
|
print_response(res)
|
54
54
|
end
|
data/lib/bl/notifications.rb
CHANGED
@@ -10,27 +10,27 @@ module Bl
|
|
10
10
|
desc 'list', ''
|
11
11
|
options minId: :numeric, maxId: :numeric, count: :numeric, order: :string
|
12
12
|
def list
|
13
|
-
res =
|
13
|
+
res = request(:get, @url, options.to_h)
|
14
14
|
res.body.map { |n| puts n.pretty_inspect }
|
15
15
|
end
|
16
16
|
|
17
17
|
desc 'count', ''
|
18
18
|
options alreadyRead: :boolean, resourceAlreadyRead: :boolean
|
19
19
|
def count
|
20
|
-
# puts
|
20
|
+
# puts request(:get, "#{@url}/count").body.count
|
21
21
|
# TODO fix nil error
|
22
22
|
end
|
23
23
|
|
24
24
|
desc 'mark-as-read', ''
|
25
25
|
def mark_as_read
|
26
|
-
res =
|
26
|
+
res = request(:post, "#{@url}/markAsRead")
|
27
27
|
puts 'notifications mark as readed'
|
28
28
|
puts res.body.count
|
29
29
|
end
|
30
30
|
|
31
31
|
desc 'read NOTIFICATIONS_ID', ''
|
32
32
|
def read(id)
|
33
|
-
res =
|
33
|
+
res = request(:post, "#{@url}/#{id}/markAsRead")
|
34
34
|
puts "notifications #{id} readed"
|
35
35
|
puts res.pretty_inspect
|
36
36
|
end
|
data/lib/bl/printer.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Bl
|
2
|
+
module Printer
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def print_response(res, resource)
|
6
|
+
case resource
|
7
|
+
when :issue
|
8
|
+
puts formatter.render(printable_issues(res.body), fields: ISSUE_FIELDS)
|
9
|
+
when :named
|
10
|
+
puts formatter.render(res.body, fields: %i(id name))
|
11
|
+
else
|
12
|
+
raise 'invalid resource error'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def printable_issues(ary)
|
17
|
+
ary = Array(ary)
|
18
|
+
ary.each do |v|
|
19
|
+
v.issueType = v.issueType.name
|
20
|
+
v.assignee = v.assignee.name if v.assignee
|
21
|
+
v.status = v.status.name
|
22
|
+
v.priority = v.priority.name
|
23
|
+
v.startDate = format_date(v.startDate)
|
24
|
+
v.dueDate = format_date(v.dueDate)
|
25
|
+
v.created = format_datetime(v.created)
|
26
|
+
v.updated = format_datetime(v.updated)
|
27
|
+
end
|
28
|
+
ary
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/bl/project.rb
CHANGED
@@ -8,7 +8,7 @@ module Bl
|
|
8
8
|
|
9
9
|
desc 'activities ID', 'show project activities'
|
10
10
|
def activities(id)
|
11
|
-
res =
|
11
|
+
res = request(:get, "#{@url}/#{id}/activities")
|
12
12
|
res.body.each do |a|
|
13
13
|
p a.pretty_inspect
|
14
14
|
end
|
@@ -16,18 +16,16 @@ module Bl
|
|
16
16
|
|
17
17
|
desc 'list', 'list projects'
|
18
18
|
def list
|
19
|
-
res =
|
19
|
+
res = request(:get, @url)
|
20
20
|
print_response(res)
|
21
21
|
end
|
22
22
|
|
23
23
|
desc 'show', 'show project'
|
24
24
|
def show(id)
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
puts e.message
|
30
|
-
end
|
25
|
+
res = request(:get, "#{@url}/#{id}")
|
26
|
+
print_response(res)
|
27
|
+
rescue => e
|
28
|
+
puts e.message
|
31
29
|
end
|
32
30
|
|
33
31
|
desc 'add', 'add project'
|
@@ -37,7 +35,7 @@ module Bl
|
|
37
35
|
option :subtaskingEnabled, type: :boolean, default: false
|
38
36
|
option :textFormattingRule, type: :string, default: 'markdown'
|
39
37
|
def add(name)
|
40
|
-
res =
|
38
|
+
res = request(:post, @url, {name: name}.merge(delete_class_options(options.to_h)))
|
41
39
|
puts 'project added'
|
42
40
|
print_response(res)
|
43
41
|
end
|
@@ -45,14 +43,14 @@ module Bl
|
|
45
43
|
desc 'update', 'update project'
|
46
44
|
options PROJECT_PARAMS
|
47
45
|
def update(id)
|
48
|
-
res =
|
46
|
+
res = request(:patch, "#{@url}/#{id}", delete_class_options(options.to_h))
|
49
47
|
puts 'project updated'
|
50
48
|
print_response(res)
|
51
49
|
end
|
52
50
|
|
53
51
|
desc 'delete', 'delete project'
|
54
52
|
def delete(id)
|
55
|
-
res =
|
53
|
+
res = request(:delete, "#{@url}/#{id}")
|
56
54
|
puts 'project deleted'
|
57
55
|
print_response(res)
|
58
56
|
end
|
@@ -78,14 +76,14 @@ module Bl
|
|
78
76
|
closed_issues_count = count_issues(id, statusId: [4])
|
79
77
|
puts "#{closed_issues_count} / #{all_issues_count}"
|
80
78
|
puts '--milestone--'
|
81
|
-
versions =
|
79
|
+
versions = request(:get, "projects/#{@config[:project_key]}/versions").body
|
82
80
|
versions.each do |version|
|
83
81
|
all_issues_count = count_issues(id, milestoneId: [version.id])
|
84
82
|
closed_issues_count = count_issues(id, milestoneId: [version.id], statusId: [4])
|
85
83
|
puts "#{version.name}: #{closed_issues_count} / #{all_issues_count}"
|
86
84
|
end
|
87
85
|
puts '--category--'
|
88
|
-
categories =
|
86
|
+
categories = request(:get, "projects/#{@config[:project_key]}/categories").body
|
89
87
|
categories.each do |category|
|
90
88
|
all_issues_count = count_issues(id, categoryId: [category.id])
|
91
89
|
closed_issues_count = count_issues(id, categoryId: [category.id], statusId: [4])
|
@@ -95,13 +93,13 @@ module Bl
|
|
95
93
|
|
96
94
|
desc 'users ID', 'show project users'
|
97
95
|
def users(id)
|
98
|
-
res =
|
96
|
+
res = request(:get, "#{@url}/#{id}/users")
|
99
97
|
puts formatter.render(res.body, fields: USER_FIELDS)
|
100
98
|
end
|
101
99
|
|
102
100
|
desc 'image ID', 'get project image file'
|
103
101
|
def image(id)
|
104
|
-
res =
|
102
|
+
res = request(:get, "#{@url}/#{id}/image")
|
105
103
|
::File.open(res.body.filename, 'wb') { |f| f.write(res.body.content) }
|
106
104
|
puts "#{res.body.filename} generated"
|
107
105
|
end
|
@@ -112,7 +110,7 @@ module Bl
|
|
112
110
|
args = {
|
113
111
|
projectId: [project_id],
|
114
112
|
}.merge(args)
|
115
|
-
|
113
|
+
request(:get,
|
116
114
|
'issues/count',
|
117
115
|
args
|
118
116
|
).body.count
|
data/lib/bl/recent.rb
CHANGED
@@ -8,20 +8,16 @@ module Bl
|
|
8
8
|
|
9
9
|
desc 'issues COUNT', 'list recently viewed issues'
|
10
10
|
def issues(count = nil)
|
11
|
-
|
12
|
-
|
13
|
-
count: count
|
14
|
-
).body.each do |i|
|
11
|
+
res = request(:get, 'users/myself/recentlyViewedIssues', count: count)
|
12
|
+
res.body.each do |i|
|
15
13
|
puts [i.issue.issueKey, i.issue.summary].join("\t")
|
16
14
|
end
|
17
15
|
end
|
18
16
|
|
19
17
|
desc 'wikis COUNT', 'list recently viewed wikis'
|
20
18
|
def wikis(count = nil)
|
21
|
-
|
22
|
-
|
23
|
-
count: count
|
24
|
-
).body.each do |w|
|
19
|
+
res = request(:get, 'users/myself/recentlyViewedWikis', count: count)
|
20
|
+
res.body.each do |w|
|
25
21
|
puts [w.page.id, w.page.name].join("\t")
|
26
22
|
end
|
27
23
|
end
|
data/lib/bl/requestable.rb
CHANGED
@@ -12,5 +12,22 @@ module Bl
|
|
12
12
|
def formatter
|
13
13
|
@formatter ||= Formatter.new(format: options[:format])
|
14
14
|
end
|
15
|
+
|
16
|
+
def request(method, url, opts = nil)
|
17
|
+
case method
|
18
|
+
when :get
|
19
|
+
client.get(url, opts.to_h)
|
20
|
+
when :post
|
21
|
+
client.post(url, opts.to_h)
|
22
|
+
when :patch
|
23
|
+
client.patch(url, opts.to_h)
|
24
|
+
when :delete
|
25
|
+
client.delete(url, opts.to_h)
|
26
|
+
else
|
27
|
+
raise 'invalid method error'
|
28
|
+
end
|
29
|
+
rescue => e
|
30
|
+
puts e.message
|
31
|
+
end
|
15
32
|
end
|
16
33
|
end
|
data/lib/bl/space.rb
CHANGED
@@ -8,27 +8,27 @@ module Bl
|
|
8
8
|
|
9
9
|
desc 'info', 'show space info'
|
10
10
|
def info
|
11
|
-
res =
|
11
|
+
res = request(:get, 'space')
|
12
12
|
puts formatter.render(res.body, fields: SPACE_FIELDS)
|
13
13
|
end
|
14
14
|
|
15
15
|
desc 'activities', 'show space activities'
|
16
16
|
def activities
|
17
|
-
|
17
|
+
request(:get, 'space/activities').body.each do |a|
|
18
18
|
p a.pretty_inspect
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
desc 'image', 'get space image file'
|
23
23
|
def image
|
24
|
-
body =
|
24
|
+
body = request(:get, 'space/image').body
|
25
25
|
::File.open(body.filename, "wb") {|f| f.write(body.content)}
|
26
26
|
puts "#{body.filename} generated."
|
27
27
|
end
|
28
28
|
|
29
29
|
desc 'get-notification', 'get space notification'
|
30
30
|
def get_notification
|
31
|
-
res =
|
31
|
+
res = request(:get, 'space/notification')
|
32
32
|
print_space_notification(res)
|
33
33
|
end
|
34
34
|
|
@@ -41,7 +41,7 @@ module Bl
|
|
41
41
|
|
42
42
|
desc 'disk-usage', 'get space disk usage'
|
43
43
|
def disk_usage
|
44
|
-
res =
|
44
|
+
res = request(:get, 'space/diskUsage')
|
45
45
|
print_space_disk_usage(res)
|
46
46
|
end
|
47
47
|
|
data/lib/bl/type.rb
CHANGED
@@ -9,7 +9,7 @@ module Bl
|
|
9
9
|
|
10
10
|
desc 'list', 'list issue types'
|
11
11
|
def list
|
12
|
-
res =
|
12
|
+
res = request(:get, @url)
|
13
13
|
print_response(res)
|
14
14
|
end
|
15
15
|
|
@@ -17,7 +17,7 @@ module Bl
|
|
17
17
|
option :color, type: :string, required: true
|
18
18
|
def add(*names)
|
19
19
|
names.each do |name|
|
20
|
-
res =
|
20
|
+
res = request(:post, @url, name: name, color: options[:color])
|
21
21
|
puts 'type added'
|
22
22
|
print_response(res)
|
23
23
|
end
|
@@ -28,7 +28,7 @@ module Bl
|
|
28
28
|
option :color, color: :color
|
29
29
|
def update(*ids)
|
30
30
|
ids.each do |id|
|
31
|
-
res =
|
31
|
+
res = request(:patch, "#{@url}/#{id}", delete_class_options(options))
|
32
32
|
puts 'type updated'
|
33
33
|
print_response(res)
|
34
34
|
end
|
@@ -38,7 +38,7 @@ module Bl
|
|
38
38
|
option :substituteIssueTypeId, type: :numeric, required: true
|
39
39
|
def delete(*ids)
|
40
40
|
ids.each do |id|
|
41
|
-
res =
|
41
|
+
res = request(:delete, "#{@url}/#{id}", delete_class_options(options))
|
42
42
|
puts 'type deleted'
|
43
43
|
print_response
|
44
44
|
end
|
data/lib/bl/users.rb
CHANGED
@@ -9,19 +9,19 @@ module Bl
|
|
9
9
|
|
10
10
|
desc 'list', 'list users'
|
11
11
|
def list
|
12
|
-
res =
|
12
|
+
res = request(:get, 'users')
|
13
13
|
print_response(res)
|
14
14
|
end
|
15
15
|
|
16
16
|
desc 'show USER_ID', ''
|
17
17
|
def show(id)
|
18
|
-
res =
|
18
|
+
res = request(:get, "#{@url}/#{id}")
|
19
19
|
puts formatter.render(res.body, fields: USER_FIELDS)
|
20
20
|
end
|
21
21
|
|
22
22
|
desc 'add USER_ID PASSWORD NAME MAIL_ADDRESS ROLE_TYPE', ''
|
23
23
|
def add(id, pass, name, mail_address, role_type)
|
24
|
-
res =
|
24
|
+
res = request(:post, "#{@url}", userId: id, password: pass, name: name, mailAddress: mail_address, roleType: role_type)
|
25
25
|
puts 'user added'
|
26
26
|
print_response(res)
|
27
27
|
end
|
@@ -29,34 +29,34 @@ module Bl
|
|
29
29
|
desc 'update USER_ID', ''
|
30
30
|
options USER_PARAMS
|
31
31
|
def update(id)
|
32
|
-
res =
|
32
|
+
res = request(:patch, "#{@url}/#{id}", delete_class_options(options.to_h))
|
33
33
|
puts 'user updated:'
|
34
34
|
print_response(res)
|
35
35
|
end
|
36
36
|
|
37
37
|
desc 'delete', ''
|
38
38
|
def delete(id)
|
39
|
-
res =
|
39
|
+
res = request(:delete, "#{@url}/#{id}")
|
40
40
|
puts 'user deleted'
|
41
41
|
print_response(res)
|
42
42
|
end
|
43
43
|
|
44
44
|
desc 'myself', ''
|
45
45
|
def myself
|
46
|
-
res =
|
46
|
+
res = request(:get, "#{@url}/myself")
|
47
47
|
print_response(res)
|
48
48
|
end
|
49
49
|
|
50
50
|
desc 'icon ID', ''
|
51
51
|
def icon(id)
|
52
|
-
# res =
|
52
|
+
# res = request(:get, "#{@url}/#{id}/icon")
|
53
53
|
# TODO fix nil error
|
54
54
|
end
|
55
55
|
|
56
56
|
desc 'activities USER_ID', "list user's activities"
|
57
57
|
options activityTypeId: :array, minId: :numeric, maxId: :numeric, count: :numeric, order: :string
|
58
58
|
def activities(user_id)
|
59
|
-
res =
|
59
|
+
res = request(:get, "/users/#{user_id}/activities")
|
60
60
|
res.body.map { |a| print_activity(a) }
|
61
61
|
end
|
62
62
|
|
@@ -64,7 +64,7 @@ module Bl
|
|
64
64
|
options minId: :numeric, maxId: :numeric, count: :numeric, order: :string
|
65
65
|
def stars(*user_ids)
|
66
66
|
user_ids.each do |user_id|
|
67
|
-
res =
|
67
|
+
res = request(:get, "/users/#{user_id}/stars", options.to_h)
|
68
68
|
res.body.map { |s| p s }
|
69
69
|
end
|
70
70
|
end
|
@@ -73,7 +73,7 @@ module Bl
|
|
73
73
|
options since: :string, until: :string
|
74
74
|
def stars_count(*user_ids)
|
75
75
|
user_ids.each do |user_id|
|
76
|
-
p
|
76
|
+
p request(:get, "/users/#{user_id}/stars/count", options.to_h).body.count
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
data/lib/bl/version.rb
CHANGED
data/lib/bl/watchings.rb
CHANGED
@@ -10,27 +10,27 @@ module Bl
|
|
10
10
|
desc 'list USER_ID', ''
|
11
11
|
options WATCHINGS_PARAMS
|
12
12
|
def list(id)
|
13
|
-
res =
|
13
|
+
res = request(:get, "/users/#{id}/#{@url}", delete_class_options(options.to_h))
|
14
14
|
res.body.map { |t| print_watch_target(t) }
|
15
15
|
end
|
16
16
|
|
17
17
|
desc 'count USER_ID', ''
|
18
18
|
options resourceAlreadyRead: :boolean, alreadyRead: :boolean
|
19
19
|
def count(id)
|
20
|
-
res =
|
20
|
+
res = request(:get, "/users/#{id}/#{@url}/count")
|
21
21
|
puts res.body.count
|
22
22
|
end
|
23
23
|
|
24
24
|
desc 'show WATCHING_ID', ''
|
25
25
|
def show(id)
|
26
|
-
res =
|
26
|
+
res = request(:get, "watchings/#{id}")
|
27
27
|
print_watch_target(res.body)
|
28
28
|
end
|
29
29
|
|
30
30
|
desc 'add', ''
|
31
31
|
options issueIdOrKey: :required, note: :string
|
32
32
|
def add
|
33
|
-
res =
|
33
|
+
res = request(:post, 'watchings', options.to_h)
|
34
34
|
puts 'watch added'
|
35
35
|
print_watch_target(res.body)
|
36
36
|
end
|
@@ -39,27 +39,27 @@ module Bl
|
|
39
39
|
option note: :string
|
40
40
|
def update(id)
|
41
41
|
# TODO fix conflict with issue update command
|
42
|
-
# res =
|
42
|
+
# res = request(:patch, "watchings/#{id}", option.to_h)
|
43
43
|
# puts 'watch updated'
|
44
44
|
# print_watch_target(res.body)
|
45
45
|
end
|
46
46
|
|
47
47
|
desc 'delete WATCHING_ID', ''
|
48
48
|
def delete(id)
|
49
|
-
res =
|
49
|
+
res = request(:delete, "watchings/#{id}")
|
50
50
|
puts 'watch deleted'
|
51
51
|
print_watch_target(res.body)
|
52
52
|
end
|
53
53
|
|
54
54
|
desc 'mark-as-read WATCHING_ID', ''
|
55
55
|
def mark_as_read(id)
|
56
|
-
res =
|
56
|
+
res = request(:post, "watchings/#{id}/markAsRead")
|
57
57
|
puts 'watch mark as read'
|
58
58
|
end
|
59
59
|
|
60
60
|
desc 'mark-as-checked USER_ID', ''
|
61
61
|
def mark_as_checked(id)
|
62
|
-
res =
|
62
|
+
res = request(:post, "/users/#{id}/watchings/markAsChecked")
|
63
63
|
puts 'watch mark as checked'
|
64
64
|
end
|
65
65
|
|
data/lib/bl/webhooks.rb
CHANGED
@@ -9,20 +9,20 @@ module Bl
|
|
9
9
|
|
10
10
|
desc 'list', ''
|
11
11
|
def list
|
12
|
-
res =
|
12
|
+
res = request(:get, @url)
|
13
13
|
print_response(res)
|
14
14
|
end
|
15
15
|
|
16
16
|
desc 'show WEBHOOK_ID', ''
|
17
17
|
def show(id)
|
18
|
-
res =
|
18
|
+
res = request(:get, "#{@url}/#{id}")
|
19
19
|
print_response(res)
|
20
20
|
end
|
21
21
|
|
22
22
|
desc 'add', ''
|
23
23
|
options WEBHOOK_PARAMS
|
24
24
|
def add
|
25
|
-
res =
|
25
|
+
res = request(:post, @url, options.to_h)
|
26
26
|
puts 'webhook added'
|
27
27
|
print_response(res)
|
28
28
|
end
|
@@ -30,14 +30,14 @@ module Bl
|
|
30
30
|
desc 'update WEBHOOK_ID', ''
|
31
31
|
options WEBHOOK_PARAMS
|
32
32
|
def update(id)
|
33
|
-
res =
|
33
|
+
res = request(:patch, "#{@url}/#{id}", options.to_h)
|
34
34
|
puts 'webhook updated'
|
35
35
|
print_response(res)
|
36
36
|
end
|
37
37
|
|
38
38
|
desc 'delete WEBHOOK_ID', ''
|
39
39
|
def delete(id)
|
40
|
-
res =
|
40
|
+
res = request(:delete, "#{@url}/#{id}")
|
41
41
|
puts 'webhook deleted'
|
42
42
|
print_response(res)
|
43
43
|
end
|
data/lib/bl/wiki.rb
CHANGED
@@ -9,13 +9,13 @@ module Bl
|
|
9
9
|
|
10
10
|
desc 'list', 'list wikis'
|
11
11
|
def list
|
12
|
-
res =
|
12
|
+
res = request(:get, @url, projectIdOrKey: @config[:project_key])
|
13
13
|
puts formatter.render(res.body, fields: WIKI_FIELDS)
|
14
14
|
end
|
15
15
|
|
16
16
|
desc 'show ID', "show a wiki's content"
|
17
17
|
def show(id)
|
18
|
-
body =
|
18
|
+
body = request(:get, "#{@url}/#{id}").body
|
19
19
|
puts "id: #{body.id}"
|
20
20
|
puts "projectId: #{body.projectId}"
|
21
21
|
puts "name: #{body.name}"
|
@@ -27,7 +27,7 @@ module Bl
|
|
27
27
|
|
28
28
|
desc 'edit ID', 'edit a wiki by $EDITOR'
|
29
29
|
def edit(id)
|
30
|
-
wiki_content =
|
30
|
+
wiki_content = request(:get, "#{@url}/#{id}").body.content
|
31
31
|
file = Tempfile.new
|
32
32
|
file.puts(wiki_content)
|
33
33
|
file.close
|
@@ -35,7 +35,7 @@ module Bl
|
|
35
35
|
file.open
|
36
36
|
system("$EDITOR #{file.path}")
|
37
37
|
new_content = file.read
|
38
|
-
|
38
|
+
request(:patch, "#{@url}/#{id}", content: new_content)
|
39
39
|
puts "wiki #{id} updated."
|
40
40
|
ensure
|
41
41
|
file.close
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- saki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -182,6 +182,7 @@ files:
|
|
182
182
|
- lib/bl/cli.rb
|
183
183
|
- lib/bl/command.rb
|
184
184
|
- lib/bl/config.rb
|
185
|
+
- lib/bl/constants.rb
|
185
186
|
- lib/bl/file.rb
|
186
187
|
- lib/bl/formatter.rb
|
187
188
|
- lib/bl/formatting.rb
|
@@ -189,6 +190,7 @@ files:
|
|
189
190
|
- lib/bl/groups.rb
|
190
191
|
- lib/bl/milestone.rb
|
191
192
|
- lib/bl/notifications.rb
|
193
|
+
- lib/bl/printer.rb
|
192
194
|
- lib/bl/project.rb
|
193
195
|
- lib/bl/recent.rb
|
194
196
|
- lib/bl/requestable.rb
|