lita-reminder 0.0.2 → 0.0.3
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/lita/handlers/reminder.rb +1 -1
- data/lib/reminder/runner.rb +11 -7
- data/lib/reminder/task.rb +9 -3
- data/lita-reminder.gemspec +1 -1
- data/spec/lita/handlers/reminder_spec.rb +3 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1416912c50f4884287365f915763b3953fc738c6
|
4
|
+
data.tar.gz: 64008f920b6e526a2d9951610fc2538e95086a95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78a1b5109cbd2532b5cbd17692269660154d5309a6a0788532278ce38704d3ec427efefb5a4bc752d883a821c1d8b9c9d48965022bcfc4178df376c9c53554d5
|
7
|
+
data.tar.gz: 01642925d74ba84d329237c4aeb05a0ee9c50741c109f2068e27055d5da2abdaca786b038c34e9f3c350bcc9267749d5136ac0acf5a1b45e8aab6eae19cb2209
|
@@ -12,7 +12,7 @@ module Lita
|
|
12
12
|
@@mutex = Mutex.new
|
13
13
|
@@runner = ReminderRunner.new
|
14
14
|
|
15
|
-
route(/^remind\s+(?<who
|
15
|
+
route(/^remind\s+(?<who>.*?)\s+(?<type>at|in|every|cron)\s+(?<time>.*)(\s+first\s+at\s+(?<first>.*))?\s+to\s+(?<task>.*?)(\s+repeat\s+(?<repeat>.*)\s+times\s+(?<repeat_interval>.*))?$/, :add,
|
16
16
|
help: {"remind (me|here|username|room) (at|in|every|cron) TIME [first at TIME] to TASK [repeat 3|many times 10m]" => "Add a reminder"})
|
17
17
|
route(/^reminder\s+done\s+(\d+)$/, :done, help: {"reminder ID done" => "Stop nagging"})
|
18
18
|
route(/^reminder\s+delete\s+(\d+)$/, :delete, help: {"reminder ID delete" => "Delete reminder"})
|
data/lib/reminder/runner.rb
CHANGED
@@ -28,19 +28,26 @@ class ReminderRunner
|
|
28
28
|
def add(response)
|
29
29
|
task = ReminderTask.from_message(@reminder_count, response.match_data, response.message.source)
|
30
30
|
@redis.rpush("reminders", task.dump)
|
31
|
-
task.start_job(self)
|
32
31
|
@reminders << task
|
32
|
+
task.start_job(self)
|
33
33
|
response.reply("Task #{task.index} added, next run at #{task.job.next_time.strftime('%Y-%m-%d %H:%M:%S')}")
|
34
34
|
@reminder_count += 1
|
35
35
|
end
|
36
36
|
|
37
37
|
def done(response)
|
38
|
-
@reminders[response.match_data[1]].stop_repeat
|
38
|
+
@reminders[response.match_data[1].to_i].stop_repeat
|
39
39
|
end
|
40
40
|
|
41
41
|
def delete(response)
|
42
|
-
index =
|
43
|
-
|
42
|
+
index = response.match_data[1].to_i
|
43
|
+
if @reminders[index].nil?
|
44
|
+
response.reply("Task #{index} does not exist")
|
45
|
+
elsif index != @reminders[index].index
|
46
|
+
response.reply("Task #{index} is broken (bot internal error)")
|
47
|
+
else
|
48
|
+
kill(index)
|
49
|
+
response.reply("Task #{index} deleted")
|
50
|
+
end
|
44
51
|
end
|
45
52
|
|
46
53
|
def list(response)
|
@@ -60,9 +67,6 @@ class ReminderRunner
|
|
60
67
|
end
|
61
68
|
|
62
69
|
def kill(index)
|
63
|
-
if index != @reminders[index].index
|
64
|
-
raise 'failed sanity check: task has bad index'
|
65
|
-
end
|
66
70
|
@reminders[index].die
|
67
71
|
@reminders[index] = nil
|
68
72
|
@redis.lset("reminders", index, nil)
|
data/lib/reminder/task.rb
CHANGED
@@ -69,8 +69,10 @@ class ReminderTask
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def stop_repeat
|
72
|
-
@repeat_job.
|
73
|
-
|
72
|
+
unless @repeat_job.nil?
|
73
|
+
@repeat_job.unschedule
|
74
|
+
@repeat_job = nil
|
75
|
+
end
|
74
76
|
unless @periodic
|
75
77
|
kill
|
76
78
|
end
|
@@ -126,7 +128,11 @@ class ReminderTask
|
|
126
128
|
else
|
127
129
|
re = /^(user\s+id\s+(?<user_id>.*))?^(user\s+name\s+(?<user_id>.*))?(room \s+(?<room>.*))?$/
|
128
130
|
m = re.match(message['who'])
|
129
|
-
|
131
|
+
if m.nil?
|
132
|
+
attrs['user_name'] = message['who']
|
133
|
+
else
|
134
|
+
attrs = attrs.merge(m)
|
135
|
+
end
|
130
136
|
end
|
131
137
|
attrs['type'] = message['type']
|
132
138
|
attrs['time'] = message['time']
|
data/lita-reminder.gemspec
CHANGED
@@ -9,6 +9,9 @@ describe Lita::Handlers::Reminder, lita_handler: true do
|
|
9
9
|
it { routes("reminder delete 1").to(:delete) }
|
10
10
|
it { routes("reminder done 1").to(:done) }
|
11
11
|
it { routes("remind me at 10:00 to do work repeat 2 times 1m").to(:add) }
|
12
|
+
it { routes("remind alex at 09:00 to РАБОТАЙ").to(:add) }
|
13
|
+
it { routes("remind Shell User in 10s to work").to(:add) }
|
14
|
+
|
12
15
|
it "adds tasks" do
|
13
16
|
send_message("remind me at 2024-01-01 10:30 to заплатить за сервер")
|
14
17
|
|