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 
     | 
    
         |