ellen-cron 0.0.1 → 0.0.2
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/CHANGELOG.md +5 -0
- data/README.md +2 -0
- data/ellen-cron.gemspec +1 -1
- data/images/screenshot.png +0 -0
- data/lib/ellen/cron/job.rb +4 -10
- data/lib/ellen/cron/version.rb +1 -1
- data/lib/ellen/handlers/cron.rb +21 -24
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 355331b41bd2bfd9f8c496d9beeb5fddfb15ee3a
|
4
|
+
data.tar.gz: 9bef52783244915789b8b098996d8dbee4c186f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04c3bd2d1519dda40d21069d50cedb0e3acab9bab57b48e8c9f39b707bd9f0a7e05d5dc65a7462de7094d596ead2358f8f7fb5f0419ff31a9da6bf0b6947904d
|
7
|
+
data.tar.gz: 5e0f5c210e4bf9ca20719c054c7ff67205cb22e2b5ac82abc3cfc9f3f2e166fc166bf6bddafca6c1b4b6b9dc08112a59c005aea449e10b309110fbf6d5bcf3ad
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
data/ellen-cron.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.add_dependency "activesupport"
|
20
20
|
spec.add_dependency "chrono"
|
21
|
-
spec.add_dependency "ellen", ">= 0.
|
21
|
+
spec.add_dependency "ellen", ">= 0.1.1"
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.6"
|
23
23
|
spec.add_development_dependency "rake"
|
24
24
|
end
|
Binary file
|
data/lib/ellen/cron/job.rb
CHANGED
@@ -11,10 +11,6 @@ module Ellen
|
|
11
11
|
@attributes = attributes.stringify_keys
|
12
12
|
end
|
13
13
|
|
14
|
-
def to_json
|
15
|
-
to_hash.to_json
|
16
|
-
end
|
17
|
-
|
18
14
|
def start(robot)
|
19
15
|
@thread = Thread.new do
|
20
16
|
Chrono::Trigger.new(schedule) do
|
@@ -23,6 +19,10 @@ module Ellen
|
|
23
19
|
end
|
24
20
|
end
|
25
21
|
|
22
|
+
def to_hash
|
23
|
+
attributes
|
24
|
+
end
|
25
|
+
|
26
26
|
def stop
|
27
27
|
thread.kill
|
28
28
|
end
|
@@ -42,12 +42,6 @@ module Ellen
|
|
42
42
|
def body
|
43
43
|
attributes["body"]
|
44
44
|
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def to_hash
|
49
|
-
attributes.to_json
|
50
|
-
end
|
51
45
|
end
|
52
46
|
end
|
53
47
|
end
|
data/lib/ellen/cron/version.rb
CHANGED
data/lib/ellen/handlers/cron.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Ellen
|
2
2
|
module Handlers
|
3
3
|
class Cron < Base
|
4
|
+
NAMESPACE = "cron"
|
5
|
+
|
4
6
|
on(/add job "(.+)" (.+)/, name: "add", description: "Add a new cron job")
|
5
7
|
|
6
8
|
on(/delete job (\d+)/, name: "delete", description: "Delete a cron job")
|
@@ -11,7 +13,7 @@ module Ellen
|
|
11
13
|
|
12
14
|
def add(message)
|
13
15
|
job = create(message)
|
14
|
-
robot.say
|
16
|
+
robot.say("Job #{job.id} created")
|
15
17
|
end
|
16
18
|
|
17
19
|
def delete(message)
|
@@ -19,52 +21,47 @@ module Ellen
|
|
19
21
|
if jobs.has_key?(id)
|
20
22
|
jobs[id].stop
|
21
23
|
jobs.delete(id)
|
22
|
-
|
23
|
-
robot.say "Job #{id} deleted"
|
24
|
+
robot.say("Job #{id} deleted")
|
24
25
|
else
|
25
|
-
robot.say
|
26
|
+
robot.say("Job #{id} does not exist")
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
29
30
|
def list(message)
|
30
|
-
robot.say
|
31
|
+
robot.say(summary)
|
31
32
|
end
|
32
33
|
|
33
34
|
private
|
34
35
|
|
35
|
-
def pull
|
36
|
-
self.jobs = robot.brain.data["cron"].inject({}) do |result, (id, attributes)|
|
37
|
-
result.merge(id => Ellen::Cron::Job.new(attributes))
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def push
|
42
|
-
robot.brain.data["cron"] = jobs.inject({}) do |result, (id, job)|
|
43
|
-
result.merge(id => job.to_json)
|
44
|
-
end
|
45
|
-
robot.brain.save
|
46
|
-
end
|
47
|
-
|
48
36
|
def jobs
|
49
|
-
|
37
|
+
robot.brain.data[NAMESPACE] ||= {}
|
50
38
|
end
|
51
39
|
|
52
40
|
def create(message)
|
53
41
|
job = Ellen::Cron::Job.new(id: generate_id, schedule: message[1], body: message[2])
|
54
|
-
jobs[job.id] = job
|
55
|
-
push
|
42
|
+
jobs[job.id] = job.to_hash
|
56
43
|
job.start(robot)
|
57
44
|
job
|
58
45
|
end
|
59
46
|
|
60
|
-
def
|
47
|
+
def summary
|
61
48
|
if jobs.empty?
|
62
|
-
|
49
|
+
empty_message
|
63
50
|
else
|
64
|
-
|
51
|
+
job_descriptions
|
65
52
|
end
|
66
53
|
end
|
67
54
|
|
55
|
+
def empty_message
|
56
|
+
"Job not found"
|
57
|
+
end
|
58
|
+
|
59
|
+
def job_descriptions
|
60
|
+
jobs.values.map do |attributes|
|
61
|
+
Ellen::Cron::Job.new(attributes).description
|
62
|
+
end.join("\n")
|
63
|
+
end
|
64
|
+
|
68
65
|
def generate_id
|
69
66
|
loop do
|
70
67
|
id = rand(10000)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ellen-cron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.1.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.1.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,11 +88,13 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
|
+
- CHANGELOG.md
|
91
92
|
- Gemfile
|
92
93
|
- LICENSE.txt
|
93
94
|
- README.md
|
94
95
|
- Rakefile
|
95
96
|
- ellen-cron.gemspec
|
97
|
+
- images/screenshot.png
|
96
98
|
- lib/ellen/cron.rb
|
97
99
|
- lib/ellen/cron/job.rb
|
98
100
|
- lib/ellen/cron/version.rb
|
@@ -122,3 +124,4 @@ signing_key:
|
|
122
124
|
specification_version: 4
|
123
125
|
summary: Mount cron system to Ellen to schedule messages on a specific time.
|
124
126
|
test_files: []
|
127
|
+
has_rdoc:
|