lita-reminder 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|