lita-envy 0.1.3 → 0.1.4

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: 7b6d149d6bff191a044dc53a59962548260a27d9
4
- data.tar.gz: fcafab3b1480b4eace38dff345b45abb54d27cbd
3
+ metadata.gz: 25e7123d1dcedb17ef798f0a8de34d821f1222c8
4
+ data.tar.gz: 634e009f649a0f27359f0bb14a2ed470c9883d30
5
5
  SHA512:
6
- metadata.gz: af80d2fc2484482c0ba3046454d9e8fbaf9c14470458af905c241f0909c5403386549c119f0a3c1f320448828cdce04370a47bc5106eccca665cdc4d75d7c0dd
7
- data.tar.gz: bfb11685eb3467ac104099e8e8a05b93014d4858ecd60e64e5cdf7655536520ac11b76cf38bfd058b5098b6c4e4ffae2d32eb0de05d81bd5329d737ee2acf749
6
+ metadata.gz: 1ff8c2852f565d0bd49d7d86c0fb4932e1de81e7c1a26020915529fecb495a2e9a92e5b808a91b2bdcf61944fa9874b306870e0885d5d0703f13b6fe85a0b803
7
+ data.tar.gz: a60fd300627ebb64594baa252deceed6f649f05ba0e6fe18bf70fe251fb8b63bae85f7d019882dfbfb705df06780bf971a789cb06b3dbe225d6ae4c006df1502
data/README.md CHANGED
@@ -13,6 +13,12 @@ Add lita-envy to your Lita instance's Gemfile:
13
13
  gem "lita-envy"
14
14
  ```
15
15
 
16
+ ## Configuration
17
+
18
+ ``` ruby
19
+ config.handlers.envy.namespace = 'my_project'
20
+ ```
21
+
16
22
  ## Usage
17
23
 
18
24
  ``` bash
@@ -8,11 +8,17 @@ module Lita
8
8
  route /\Aforget ([A-Za-z0-9_]+)\Z/, :forget_environment, help: { "forget [ENV ID]" => "Forget environment"}, command: true
9
9
  route /\Awrestle ([A-Za-z0-9_]+) from (.*)\Z/, :claim_used_environment, help: { "wrestle [ENV ID] from [USER]" => "Mark environment as in use by you, even though it is currently in use by another user"}, command: true
10
10
 
11
+ config :namespace, :required => true do
12
+ validate do |value|
13
+ "can only contain lowercase letters, numbers and underscores" unless value.match(/\A[a-z0-9_]+\Z/)
14
+ end
15
+ end
16
+
11
17
  def claim_environment(response)
12
18
  env_id = response.matches.first.first
13
- current_user = redis.hget(['environments', env_id].join(':'), 'user')
19
+ current_user = redis.hget(key(env_id), 'user')
14
20
  if current_user.nil? || current_user.empty?
15
- redis.hset(['environments', env_id].join(':'), 'user', response.user.name)
21
+ redis.hset(key(env_id), 'user', response.user.name)
16
22
  response.reply('ok')
17
23
  elsif current_user == response.user.name
18
24
  response.reply("Hmm, you are already using #{env_id}")
@@ -23,9 +29,9 @@ module Lita
23
29
 
24
30
  def release_environment(response)
25
31
  env_id = response.matches.first.first
26
- current_user = redis.hget(['environments', env_id].join(':'), 'user')
32
+ current_user = redis.hget(key(env_id), 'user')
27
33
  if current_user == response.user.name
28
- redis.hset(['environments', env_id].join(':'), 'user', nil)
34
+ redis.hset(key(env_id), 'user', nil)
29
35
  response.reply('ok')
30
36
  elsif current_user.nil? || current_user.empty?
31
37
  response.reply("Hmm, you are not currently using #{env_id}")
@@ -49,13 +55,13 @@ module Lita
49
55
 
50
56
  def forget_environment(response)
51
57
  env_id = response.matches.first.first
52
- current_user = redis.hget(['environments', env_id].join(':'), 'user')
58
+ current_user = redis.hget(key(env_id), 'user')
53
59
  if current_user == response.user.name
54
60
  response.reply("Hmm, you are currently using #{env_id}")
55
61
  elsif current_user.nil?
56
62
  response.reply("Hmm, I do not know about #{env_id}")
57
63
  elsif current_user.empty?
58
- redis.del(['environments', env_id].join(':'))
64
+ redis.del(key(env_id))
59
65
  response.reply('ok')
60
66
  else
61
67
  response.reply("Hmm, #{env_id} is currently in use by #{current_user}")
@@ -64,9 +70,9 @@ module Lita
64
70
 
65
71
  def claim_used_environment(response)
66
72
  env_id, specified_user = response.matches.first
67
- current_user = redis.hget(['environments', env_id].join(':'), 'user')
73
+ current_user = redis.hget(key(env_id), 'user')
68
74
  if specified_user == current_user
69
- redis.hset(['environments', env_id].join(':'), 'user', response.user.name)
75
+ redis.hset(key(env_id), 'user', response.user.name)
70
76
  response.reply('ok')
71
77
  elsif current_user.nil? or current_user.empty?
72
78
  response.reply("Hmm, #{env_id} is not currently in use")
@@ -77,6 +83,12 @@ module Lita
77
83
  end
78
84
  end
79
85
 
86
+ private
87
+
88
+ def key(env_id)
89
+ ['environments', config.namespace, env_id].join(':')
90
+ end
91
+
80
92
  Lita.register_handler(self)
81
93
  end
82
94
  end
@@ -1,9 +1,9 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-envy"
3
- spec.version = "0.1.3"
3
+ spec.version = "0.1.4"
4
4
  spec.authors = ["Ingo Weiss"]
5
- spec.email = ["ingo.weiss@lab49.com"]
6
- spec.description = "Mark environments as in use. Mark environments as available. List environments"
5
+ spec.email = ["ingo@ingoweiss.com"]
6
+ spec.description = "Helps with management of environment ussage. Adds commands for claiming and releasing environments"
7
7
  spec.summary = "Record and retrieve information about environment usage"
8
8
  spec.homepage = "https://github.com/ingoweiss/lita-envy"
9
9
  spec.license = "MIT"
@@ -2,6 +2,10 @@ require "spec_helper"
2
2
 
3
3
  describe Lita::Handlers::Envy, lita_handler: true do
4
4
 
5
+ before(:each) do
6
+ allow(subject.config).to receive(:namespace).and_return('my_project')
7
+ end
8
+
5
9
  describe 'Routing' do
6
10
 
7
11
  it { is_expected.to route_command("claim ENV123").to(:claim_environment) }
@@ -17,13 +21,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
17
21
  context "when environment is available" do
18
22
 
19
23
  before(:each) do
20
- subject.redis.hset('environments:ENV123', 'user', '')
24
+ subject.redis.hset('environments:my_project:ENV123', 'user', '')
21
25
  end
22
26
 
23
27
  it "should mark environment as in use by user" do
24
28
  carl = Lita::User.create(123, name: "Carl")
25
29
  send_command('claim ENV123', :as => carl)
26
- expect(subject.redis.hget('environments:ENV123', 'user')).to eq("Carl")
30
+ expect(subject.redis.hget('environments:my_project:ENV123', 'user')).to eq("Carl")
27
31
  end
28
32
 
29
33
  it "should reply with confirmation" do
@@ -36,13 +40,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
36
40
  context "when environment is unknown to bot" do
37
41
 
38
42
  before(:each) do
39
- subject.redis.del('environments:ENV123')
43
+ subject.redis.del('environments:my_project:ENV123')
40
44
  end
41
45
 
42
46
  it "should mark environment as in use by user" do
43
47
  carl = Lita::User.create(123, name: "Carl")
44
48
  send_command('claim ENV123', :as => carl)
45
- expect(subject.redis.hget('environments:ENV123', 'user')).to eq("Carl")
49
+ expect(subject.redis.hget('environments:my_project:ENV123', 'user')).to eq("Carl")
46
50
  end
47
51
 
48
52
  it "should reply with confirmation" do
@@ -55,17 +59,17 @@ describe Lita::Handlers::Envy, lita_handler: true do
55
59
  context "when environment is in use by another user" do
56
60
 
57
61
  before(:each) do
58
- subject.redis.hset('environments:ENV123', 'user', 'Alicia')
62
+ subject.redis.hset('environments:my_project:ENV123', 'user', 'Alicia')
59
63
  end
60
64
 
61
65
  it "should leave the environment untouched" do
62
66
  carl = Lita::User.create(123, name: "Carl")
63
67
  send_command('claim ENV123', :as => carl)
64
- expect(subject.redis.hget('environments:ENV123', 'user')).to eq("Alicia")
68
+ expect(subject.redis.hget('environments:my_project:ENV123', 'user')).to eq("Alicia")
65
69
  end
66
70
 
67
71
  it "should reply with notification" do
68
- subject.redis.hset('environments:ENV123', 'user', 'Alicia')
72
+ subject.redis.hset('environments:my_project:ENV123', 'user', 'Alicia')
69
73
  carl = Lita::User.create(123, name: "Carl")
70
74
  send_command('claim ENV123', :as => carl)
71
75
  expect(replies.first).to eq("Hmm, ENV123 is currently in use by Alicia")
@@ -76,17 +80,17 @@ describe Lita::Handlers::Envy, lita_handler: true do
76
80
  context "when environment is already in use by user" do
77
81
 
78
82
  before(:each) do
79
- subject.redis.hset('environments:ENV123', 'user', 'Carl')
83
+ subject.redis.hset('environments:my_project:ENV123', 'user', 'Carl')
80
84
  end
81
85
 
82
86
  it "should leave the environment untouched" do
83
87
  carl = Lita::User.create(123, name: "Carl")
84
88
  send_command('claim ENV123', :as => carl)
85
- expect(subject.redis.hget('environments:ENV123', 'user')).to eq("Carl")
89
+ expect(subject.redis.hget('environments:my_project:ENV123', 'user')).to eq("Carl")
86
90
  end
87
91
 
88
92
  it "should reply with notification" do
89
- subject.redis.hset('environments:ENV123', 'user', 'Carl')
93
+ subject.redis.hset('environments:my_project:ENV123', 'user', 'Carl')
90
94
  carl = Lita::User.create(123, name: "Carl")
91
95
  send_command('claim ENV123', :as => carl)
92
96
  expect(replies.first).to eq("Hmm, you are already using ENV123")
@@ -101,13 +105,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
101
105
  context "when environment is in use by user" do
102
106
 
103
107
  before(:each) do
104
- subject.redis.hset('environments:ENV234', 'user', 'Alicia')
108
+ subject.redis.hset('environments:my_project:ENV234', 'user', 'Alicia')
105
109
  end
106
110
 
107
111
  it "should mark environment as available" do
108
112
  alicia = Lita::User.create(123, name: "Alicia")
109
113
  send_command('release ENV234', :as => alicia)
110
- expect(subject.redis.hget('environments:ENV234', 'user')).to be_empty
114
+ expect(subject.redis.hget('environments:my_project:ENV234', 'user')).to be_empty
111
115
  end
112
116
 
113
117
  it "should reply with confirmation" do
@@ -121,13 +125,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
121
125
  context "when environment is in use by another user" do
122
126
 
123
127
  before(:each) do
124
- subject.redis.hset('environments:ENV234', 'user', 'Carl')
128
+ subject.redis.hset('environments:my_project:ENV234', 'user', 'Carl')
125
129
  end
126
130
 
127
131
  it "should leave the environment untouched" do
128
132
  alicia = Lita::User.create(123, name: "Alicia")
129
133
  send_command('release ENV234', :as => alicia)
130
- expect(subject.redis.hget('environments:ENV234', 'user')).to eq('Carl')
134
+ expect(subject.redis.hget('environments:my_project:ENV234', 'user')).to eq('Carl')
131
135
  end
132
136
 
133
137
  it "should reply with notification" do
@@ -141,13 +145,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
141
145
  context "when environment is not in use" do
142
146
 
143
147
  before(:each) do
144
- subject.redis.hset('environments:ENV234', 'user', '')
148
+ subject.redis.hset('environments:my_project:ENV234', 'user', '')
145
149
  end
146
150
 
147
151
  it "should leave the environment untouched" do
148
152
  alicia = Lita::User.create(123, name: "Alicia")
149
153
  send_command('release ENV234', :as => alicia)
150
- expect(subject.redis.hget('environments:ENV234', 'user')).to eq('')
154
+ expect(subject.redis.hget('environments:my_project:ENV234', 'user')).to eq('')
151
155
  end
152
156
 
153
157
  it "should reply with notification" do
@@ -161,13 +165,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
161
165
  context "when environment is unknown to bot" do
162
166
 
163
167
  before(:each) do
164
- subject.redis.del('environments:ENV234')
168
+ subject.redis.del('environments:my_project:ENV234')
165
169
  end
166
170
 
167
171
  it "should leave the environment untouched" do
168
172
  alicia = Lita::User.create(123, name: "Alicia")
169
173
  send_command('release ENV234', :as => alicia)
170
- expect(subject.redis.hget('environments:ENV234', 'user')).to be_nil
174
+ expect(subject.redis.hget('environments:my_project:ENV234', 'user')).to be_nil
171
175
  end
172
176
 
173
177
  it "should reply with notification" do
@@ -183,9 +187,9 @@ describe Lita::Handlers::Envy, lita_handler: true do
183
187
  describe 'User listing environments' do
184
188
 
185
189
  it "should list environments" do
186
- subject.redis.hset('environments:ENV123', 'user', 'Alicia')
187
- subject.redis.hset('environments:ENV234', 'user', 'Carl')
188
- subject.redis.hset('environments:ENV345', 'user', '')
190
+ subject.redis.hset('environments:my_project:ENV123', 'user', 'Alicia')
191
+ subject.redis.hset('environments:my_project:ENV234', 'user', 'Carl')
192
+ subject.redis.hset('environments:my_project:ENV345', 'user', '')
189
193
  send_command('envs')
190
194
  expect(replies.first.split("\n")).to eq([
191
195
  "ENV123 (Alicia)",
@@ -201,12 +205,12 @@ describe Lita::Handlers::Envy, lita_handler: true do
201
205
  context "when environment is available" do
202
206
 
203
207
  before(:each) do
204
- subject.redis.hset('environments:ENV345', 'user', '')
208
+ subject.redis.hset('environments:my_project:ENV345', 'user', '')
205
209
  end
206
210
 
207
211
  it "should forgetironments" do
208
212
  send_command('forget ENV345')
209
- expect(subject.redis.keys).to_not include('environments:ENV345')
213
+ expect(subject.redis.keys).to_not include('environments:my_project:ENV345')
210
214
  end
211
215
 
212
216
  it "should confirm" do
@@ -219,7 +223,7 @@ describe Lita::Handlers::Envy, lita_handler: true do
219
223
  context "when environment is unknown to bot" do
220
224
 
221
225
  before(:each) do
222
- subject.redis.del('environments:ENV345')
226
+ subject.redis.del('environments:my_project:ENV345')
223
227
  end
224
228
 
225
229
  it "should reply with notification" do
@@ -232,13 +236,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
232
236
  context "when environment is in use by another user" do
233
237
 
234
238
  before(:each) do
235
- subject.redis.hset('environments:ENV345', 'user', 'Carl')
239
+ subject.redis.hset('environments:my_project:ENV345', 'user', 'Carl')
236
240
  end
237
241
 
238
242
  it "should leave the environment untouched" do
239
243
  alicia = Lita::User.create(123, name: "Alicia")
240
244
  send_command('forget ENV345', :as => alicia)
241
- expect(subject.redis.hget('environments:ENV345', 'user')).to eq('Carl')
245
+ expect(subject.redis.hget('environments:my_project:ENV345', 'user')).to eq('Carl')
242
246
  end
243
247
 
244
248
  it "should reply with notification" do
@@ -251,13 +255,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
251
255
  context "when environment is in use by user" do
252
256
 
253
257
  before(:each) do
254
- subject.redis.hset('environments:ENV345', 'user', 'Alicia')
258
+ subject.redis.hset('environments:my_project:ENV345', 'user', 'Alicia')
255
259
  end
256
260
 
257
261
  it "should leave the environment untouched" do
258
262
  alicia = Lita::User.create(123, name: "Alicia")
259
263
  send_command('forget ENV345', :as => alicia)
260
- expect(subject.redis.hget('environments:ENV345', 'user')).to eq('Alicia')
264
+ expect(subject.redis.hget('environments:my_project:ENV345', 'user')).to eq('Alicia')
261
265
  end
262
266
 
263
267
  it "should reply with notification" do
@@ -275,13 +279,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
275
279
  context "when environment is currently in use by specified user" do
276
280
 
277
281
  before(:each) do
278
- subject.redis.hset('environments:ENV123', 'user', 'Alicia')
282
+ subject.redis.hset('environments:my_project:ENV123', 'user', 'Alicia')
279
283
  end
280
284
 
281
285
  it "should mark environment as in use" do
282
286
  carl = Lita::User.create(123, name: "Carl")
283
287
  send_command('wrestle ENV123 from Alicia', :as => carl)
284
- expect(subject.redis.hget('environments:ENV123', 'user')).to eq("Carl")
288
+ expect(subject.redis.hget('environments:my_project:ENV123', 'user')).to eq("Carl")
285
289
  end
286
290
 
287
291
  it "should reply with confirmation" do
@@ -294,13 +298,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
294
298
  context "when environment is currently in use by a user other than the specified one" do
295
299
 
296
300
  before(:each) do
297
- subject.redis.hset('environments:ENV123', 'user', 'Alicia')
301
+ subject.redis.hset('environments:my_project:ENV123', 'user', 'Alicia')
298
302
  end
299
303
 
300
304
  it "should leave the environment untouched" do
301
305
  carl = Lita::User.create(123, name: "Carl")
302
306
  send_command('wrestle ENV123 from Ben', :as => carl)
303
- expect(subject.redis.hget('environments:ENV123', 'user')).to eq("Alicia")
307
+ expect(subject.redis.hget('environments:my_project:ENV123', 'user')).to eq("Alicia")
304
308
  end
305
309
 
306
310
  it "should reply with notification" do
@@ -313,13 +317,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
313
317
  context "when environment is not currently in use" do
314
318
 
315
319
  before(:each) do
316
- subject.redis.hset('environments:ENV123', 'user', nil)
320
+ subject.redis.hset('environments:my_project:ENV123', 'user', nil)
317
321
  end
318
322
 
319
323
  it "should leave the environment untouched" do
320
324
  carl = Lita::User.create(123, name: "Carl")
321
325
  send_command('wrestle ENV123 from Ben', :as => carl)
322
- expect(subject.redis.hget('environments:ENV123', 'user')).to be_empty
326
+ expect(subject.redis.hget('environments:my_project:ENV123', 'user')).to be_empty
323
327
  end
324
328
 
325
329
  it "should reply with notification" do
@@ -332,13 +336,13 @@ describe Lita::Handlers::Envy, lita_handler: true do
332
336
  context "when environment is already marked as in use by requesting user" do
333
337
 
334
338
  before(:each) do
335
- subject.redis.hset('environments:ENV123', 'user', 'Carl')
339
+ subject.redis.hset('environments:my_project:ENV123', 'user', 'Carl')
336
340
  end
337
341
 
338
342
  it "should leave the environment untouched" do
339
343
  carl = Lita::User.create(123, name: "Carl")
340
344
  send_command('wrestle ENV123 from Ben', :as => carl)
341
- expect(subject.redis.hget('environments:ENV123', 'user')).to eq('Carl')
345
+ expect(subject.redis.hget('environments:my_project:ENV123', 'user')).to eq('Carl')
342
346
  end
343
347
 
344
348
  it "should reply with notification" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-envy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ingo Weiss
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-02 00:00:00.000000000 Z
11
+ date: 2016-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita
@@ -136,9 +136,10 @@ dependencies:
136
136
  - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description: Mark environments as in use. Mark environments as available. List environments
139
+ description: Helps with management of environment ussage. Adds commands for claiming
140
+ and releasing environments
140
141
  email:
141
- - ingo.weiss@lab49.com
142
+ - ingo@ingoweiss.com
142
143
  executables: []
143
144
  extensions: []
144
145
  extra_rdoc_files: []