lita-debug-queue 0.1.9 → 0.2.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: 197609338433856720c939f87f4c3d66884e7142
4
- data.tar.gz: 39b599c089cec86a32aaa3c089ede61464f9c5c8
3
+ metadata.gz: 13062639eb8ef466d93d44bc1421d2d8a6643cd5
4
+ data.tar.gz: 3349600d80156d2c2df971fc0c61b8bd32ed18a1
5
5
  SHA512:
6
- metadata.gz: 0b1ecc9e9ba6db3e24ff6aa564f8db187f5cd4ce3be4b03cd42f31f3d60824330081d4cf9dd8415ac6a5417aefabfba6476a946acb953d5211652ac086893c5d
7
- data.tar.gz: c3c7f599fe5097d6361cab84141a569e0e00ae1038a2c2488da97b04a57b15713700d2ae07f9c9520357bfb7d065aca950fd12c6f70ae29669865951068eeba7
6
+ metadata.gz: e6f8d5c8fe8c84d6d18e3e15e135358e23238bf350e6e3f78471e30b1046500c18d8a97dc80e3b32262c7f0c6d8f5702bd3721b6bfbb24abd67243199ad7030b
7
+ data.tar.gz: 2c15f5ced824dc95a2d0e246422ba3118ce7f848b3170a980d3ace919afd27d1b8ea098a62a1d60221d0ec9a25b5459fc68532f5c003e554d9e04ba8c79bfb3a
data/NEWS.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## News
2
2
 
3
+ ### 0.2.0 (2015-10-18)
4
+
5
+ * Restrict users adding themselves to the queue
6
+ to hours defined by weekeday in the configuration.
7
+
8
+ A `config.schedule` hash must be present in your
9
+ config file, mapping `strftime("%a")` keys to hour ranges.
10
+
11
+ * Relax routing requirements on instructor commands.
12
+
3
13
  ### 0.1.9 (2015-10-08)
4
14
 
5
15
  * Relax some of the routing requirements and fix the tests.
data/README.md CHANGED
@@ -15,16 +15,21 @@ gem "lita-debug-queue"
15
15
 
16
16
  ## Configuration
17
17
 
18
- lita-debug-queue expects two things to be present for correct operation:
18
+ lita-debug-queue expects three things to be present for correct operation:
19
19
 
20
20
  1. An `:instructors` authorization group containing admin users.
21
- If you want TAs to also be able to modify (but not clear) the
22
- queue you should add them to an `:assistants` group.
23
- 2. A `classrooms` config option containing a Hash that maps instructor mention names to classroom channels.
21
+ If you want TAs to also be able to modify (but not clear) the
22
+ queue you should add them to an `:assistants` group.
24
23
 
25
- ## Usage
24
+ 2. A `classrooms` config option containing a Hash that maps instructor mention nam es to classroom channels.
25
+
26
+ 3. A `schedule` config option containing a Hash that maps from days of the week
27
+ (as from `DateTime.now.strftime("%a")`), to ranges of hours in the
28
+ [server's time zone][heroku-tz].
26
29
 
27
- All usage is based on commands so statements must be directed `@ironbot: foo` or sent as a DM.
30
+ [heroku-tz]: http://blog.pardner.com/2012/08/setting-the-default-time-zone-for-a-heroku-app/
31
+
32
+ ## Usage
28
33
 
29
34
  ### General Commands
30
35
 
@@ -34,6 +39,7 @@ All usage is based on commands so statements must be directed `@ironbot: foo` or
34
39
  * `debug count` - Count the number of people waiting for help.
35
40
 
36
41
  ### Instructor Commands
42
+
37
43
  * `debug next` - Notify the next student to be helped.
38
44
  * `debug drop NAME` - Remove the student with NAME from the queue.
39
45
  * `debug clear` - Empty the queue.
@@ -4,6 +4,7 @@ module Lita
4
4
  extend Lita::Handler::ChatRouter
5
5
 
6
6
  config :classrooms # A mapping from instructor names to classroom channels.
7
+ config :schedule # A mapping from weekdays to available instructor hours.
7
8
 
8
9
  route(/debug me/, :add,
9
10
  help: { 'debug me' => 'Put your name in the queue for debugging help.' })
@@ -13,20 +14,22 @@ module Lita
13
14
  help: { 'debug queue' => 'Show the current queue for your class.' })
14
15
  route(/debug count/i, :count,
15
16
  help: { 'debug count' => 'Count the number of people waiting for help.' })
16
- route(/^debug next$/, :next, command: true,
17
+ route(/debug next/, :next,
17
18
  restrict_to: [:instructors, :assistants],
18
19
  help: { 'debug next' => 'Notify the next student to be helped.' })
19
- route(/^debug drop\s+(.+)$/, :drop, command: true,
20
+ route(/debug drop\s+(.+)/, :drop,
20
21
  restrict_to: [:instructors, :assistants],
21
22
  help: { 'debug drop NAME' => 'Remove the student with NAME from the queue.' })
22
- route(/^debug clear$/, :clear, command: true,
23
+ route(/^debug clear$/, :clear,
23
24
  restrict_to: [:instructors],
24
25
  help: { 'debug clear' => 'Empty the queue.' })
25
26
 
26
27
  def add(response)
27
28
  return unless check_room!(response)
28
29
  student = response.user.mention_name
29
- if @room.include?(student)
30
+ if closed?(DateTime.now)
31
+ response.reply("#{student}: Sorry, the queue is closed for the day.")
32
+ elsif @room.include?(student)
30
33
  response.reply("#{student}: Easy there killer. You're already on the list.")
31
34
  else
32
35
  @room.add(student)
@@ -95,6 +98,11 @@ module Lita
95
98
  def target_for(name)
96
99
  Lita::Source.new(user: Lita::User.find_by_mention_name(name))
97
100
  end
101
+
102
+ def closed?(now)
103
+ hours = config.schedule[now.strftime("%a")]
104
+ hours && !hours.include?(now.hour)
105
+ end
98
106
  end
99
107
 
100
108
  Lita.register_handler(DebugQueue)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-debug-queue"
3
- spec.version = "0.1.9"
3
+ spec.version = "0.2.0"
4
4
  spec.authors = ["Brit Butler"]
5
5
  spec.email = ["brit@kingcons.io"]
6
6
  spec.description = "Queue tracking of users who need debugging help with per-channel management"
@@ -10,6 +10,7 @@ describe Lita::Handlers::DebugQueue, lita_handler: true do
10
10
  allow(Lita::Handlers::RoomFinder).to receive(:get_room_name) do |room|
11
11
  room.name
12
12
  end
13
+ allow_any_instance_of(Lita::Handlers::DebugQueue).to receive(:closed?) { false }
13
14
  registry.config.handlers.debug_queue.classrooms = {
14
15
  'brit' => 'rails'
15
16
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-debug-queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brit Butler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-09 00:00:00.000000000 Z
11
+ date: 2015-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita