lita-rally 0.3.4 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 264c2a1265b75b846560dc8a6b1ca19f164c449f
4
- data.tar.gz: cf284d66fceca6147ebf4e5c62101e78d9de970c
3
+ metadata.gz: 3cd89121e0d94dbb82717bdf87a5d73bc5e30383
4
+ data.tar.gz: f881f60bb78e08338e42f4f36cd95f7f17b2aa03
5
5
  SHA512:
6
- metadata.gz: 263505e13ae00b9a0771c89c531f548f0501129cf4a56ef96f340e687091f59e5cc75f0adf53720b12f4d64745a3b2437f25c1976cdd4cc9aad5fb69ab85f4c2
7
- data.tar.gz: 9b65caf4d65a95c03559f494a4a84999df8236fa53f8eac5f0255db7421347be9fd3cfb9b55162366d5a179f2bf9a9ee026f4ff1bc1f9124f7cbc64561edeb51
6
+ metadata.gz: cff30b41736dffc5f3b7a48c8aed21ae80607e914e2e0b0d9ec978bdd764245da589789a2fedde82e21b2823a02f182a0b03e1f7cc8e385c544e500a51cd4f31
7
+ data.tar.gz: bfd3972bd78c16100b87a52a7ed0474621e682664c428bb343ffaa31d40bba05de5a83c7df8b1dd96a1bb4647b2f800f4a88c7f79776835d647c3d0c6a3d7ac6
data/README.md CHANGED
@@ -49,6 +49,13 @@ term>" in <name|description>
49
49
  ```
50
50
  Find object with terms
51
51
 
52
+ ```
53
+ lita rally <start|pause|finish|accept|backlog> <FormattedID>
54
+ ```
55
+
56
+ Move object between schedule states: **start** -> **In-Progress**, **pause** ->
57
+ **Defined**, **finish** -> **Completed**, **backlog** -> **Backlog**.
58
+
52
59
  ## License
53
60
 
54
61
  [MIT](http://opensource.org/licenses/MIT)
@@ -99,6 +99,52 @@ module Lita
99
99
  'in <name|description>' => 'Find the story or defect'
100
100
  })
101
101
 
102
+ route(/^rally (start|pause|finish|accept|backlog) ([[:alpha:]]+)(\d+)/,
103
+ :rally_mark, command: true, help: {
104
+ 'rally <start|pause|finish|accept|backlog> <formattedID>' =>
105
+ 'mark issue in-progress'
106
+ })
107
+
108
+ def rally_mark(response)
109
+ action = response.matches[0][0]
110
+ type = response.matches[0][1].downcase
111
+ id = response.matches[0][2]
112
+
113
+ schedule_state =
114
+ case action
115
+ when 'start'
116
+ 'In-Progress'
117
+ when 'pause'
118
+ 'Defined'
119
+ when 'finish'
120
+ 'Completed'
121
+ when 'accept'
122
+ 'Accepted'
123
+ when 'backlog'
124
+ 'Backlog'
125
+ end
126
+
127
+ state =
128
+ case action
129
+ when 'start','pause','backlog'
130
+ 'Open'
131
+ when 'finish'
132
+ 'Fixed'
133
+ when 'accept'
134
+ 'Closed'
135
+ end
136
+
137
+ response.reply(update_object(type, id, 'ScheduleState', schedule_state))
138
+
139
+ response.reply(update_object(type, id, 'State', state))
140
+
141
+ update_object(type, id, 'Notes',
142
+ "<br />Marked #{state} by #{response.user.name} on " \
143
+ "#{Time.now.strftime('%Y-%m-%dT%H:%M:%S%z')}",
144
+ append: true)
145
+
146
+ end
147
+
102
148
  def rally_show(response)
103
149
  type = response.matches[0][0].downcase
104
150
  id = response.matches[0][1]
@@ -126,6 +172,8 @@ module Lita
126
172
  private
127
173
 
128
174
  def get_rally_api
175
+ @rally if instance_variable_defined?('@rally')
176
+
129
177
  rally_api_config = {
130
178
  base_url: 'https://rally1.rallydev.com/slm',
131
179
  username: config.username,
@@ -133,7 +181,7 @@ module Lita
133
181
  version: config.api_version
134
182
  }
135
183
 
136
- RallyAPI::RallyRestJson.new(rally_api_config)
184
+ @rally = RallyAPI::RallyRestJson.new(rally_api_config)
137
185
  end
138
186
 
139
187
  def validate_release(rally, release)
@@ -189,6 +237,42 @@ module Lita
189
237
  end
190
238
  end
191
239
 
240
+ def update_object(type, id, attribute, value, options = {})
241
+ rally = get_rally_api
242
+ return 'Object not found' unless obj = get_by_formatted_id(type, id)
243
+
244
+ if options[:append]
245
+ fields = {attribute => obj.read[attribute] + value}
246
+ else
247
+ fields = {attribute => value}
248
+ end
249
+
250
+ updated = rally.update(@@key_map[type][:name],
251
+ "FormattedID|#{type}#{id}",
252
+ fields)
253
+ "#{attribute} of #{type.upcase}#{id} has been updated to #{value}"
254
+ rescue Exception => e
255
+ "Exception during update: #{e}"
256
+ end
257
+
258
+ def get_by_formatted_id(type, id)
259
+ rally = get_rally_api
260
+
261
+ raise 'No such object' unless @@key_map[type]
262
+
263
+ query = RallyAPI::RallyQuery.new()
264
+ query.type = @@key_map[type][:name]
265
+ query.query_string = "(FormattedID = \"#{type}#{id}\")"
266
+
267
+ result = rally.find(query)
268
+
269
+ raise 'No such object' if result.count < 1
270
+
271
+ result[0]
272
+ rescue
273
+ nil
274
+ end
275
+
192
276
  def get_rally_object(type, id)
193
277
  rally = get_rally_api
194
278
 
data/lita-rally.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'lita-rally'
3
- spec.version = '0.3.4'
3
+ spec.version = '0.4.0'
4
4
  spec.authors = ['Richard Li']
5
5
  spec.email = ['evilcat@wisewolfsolutions.com']
6
6
  spec.description = %q{Rally plugin for lita bot}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-rally
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Li
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-29 00:00:00.000000000 Z
11
+ date: 2015-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita