babot 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/babot.gemspec +2 -2
- data/bin/babot +51 -21
- data/lib/babot.rb +2 -78
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53807523166eb1aa1598787184bcacf42dd60c83
|
4
|
+
data.tar.gz: 969f1946c3b071902ef1cb03102a29136bb99915
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91f53fd6de6c569db584e07658254044ba769ae49095acd294c4216aeb1bc7cce73d5536c6f6dce50c5ff69c4c0fc022e647b9c83900327065a49f59b58aec25
|
7
|
+
data.tar.gz: ef00c38a7e27542ff1ea83f758b1970c0230fc45bd4444705a0c1ee4656c51a7bf909253570e67aa04454048d6d6c4626276d4056237d04b118e79eaef8b54dd
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
babot (0.
|
4
|
+
babot (0.4.0)
|
5
5
|
boson
|
6
6
|
twitter
|
7
7
|
whenever
|
@@ -22,7 +22,7 @@ GEM
|
|
22
22
|
multipart-post (~> 1.2.0)
|
23
23
|
i18n (0.6.4)
|
24
24
|
minitest (4.7.5)
|
25
|
-
multi_json (1.7.
|
25
|
+
multi_json (1.7.9)
|
26
26
|
multipart-post (1.2.0)
|
27
27
|
simple_oauth (0.2.0)
|
28
28
|
thread_safe (0.1.2)
|
data/babot.gemspec
CHANGED
data/bin/babot
CHANGED
@@ -1,62 +1,92 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'boson/runner'
|
4
|
+
require 'pathname'
|
5
|
+
require 'yaml'
|
4
6
|
|
5
7
|
$:.unshift File.expand_path("../../lib", __FILE__)
|
6
8
|
require 'babot'
|
7
9
|
|
8
|
-
|
10
|
+
DEFAULT_CONFIG = {
|
11
|
+
'consumer_key' => "",
|
12
|
+
'consumer_secret' => "",
|
13
|
+
'oauth_token' => "",
|
14
|
+
'oauth_token_secret' => ""
|
15
|
+
}
|
9
16
|
|
10
17
|
class BabotRunner < Boson::Runner
|
18
|
+
def initialize
|
19
|
+
cmd "mkdir -p '#{root}'"
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "Add bot [name] from [repository]"
|
23
|
+
def add(name, repository)
|
24
|
+
if File.directory? repository
|
25
|
+
cmd "ln -s '#{File.realpath repository}' '#{root.join(name)}'"
|
26
|
+
else
|
27
|
+
cmd "git clone '#{repository}' '#{root.join(name)}'"
|
28
|
+
end
|
29
|
+
cmd "mkdir -p '#{Pathname.new(root).join name, 'config'}'"
|
30
|
+
|
31
|
+
File.open(root.join(name, "config", "credentials.yml").to_s, 'w') do |config|
|
32
|
+
config.write DEFAULT_CONFIG.to_yaml
|
33
|
+
end
|
34
|
+
configure name
|
35
|
+
end
|
36
|
+
|
11
37
|
desc "Update bot [name]"
|
12
38
|
def update(name)
|
13
|
-
|
39
|
+
cmd "cd '#{root.join(name)}' && git pull --rebase origin master && bundle install"
|
14
40
|
end
|
15
41
|
|
16
42
|
desc "Update crontab"
|
17
43
|
def schedule
|
18
|
-
|
44
|
+
`ls #{root}`.split.each do |name|
|
45
|
+
cmd "whenever -i #{name} -f #{root.join(name, 'config', 'schedule.rb')}"
|
46
|
+
end
|
19
47
|
end
|
20
48
|
|
21
49
|
desc "Run bot [name]"
|
22
50
|
def run(name)
|
23
|
-
|
24
|
-
end
|
51
|
+
options = YAML::load_file root.join(name, "config", 'credentials.yml')
|
25
52
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
53
|
+
Twitter.configure do |config|
|
54
|
+
config.consumer_key = options['consumer_key']
|
55
|
+
config.consumer_secret = options['consumer_secret']
|
56
|
+
config.oauth_token = options['oauth_token']
|
57
|
+
config.oauth_token_secret = options['oauth_token_secret']
|
58
|
+
end
|
59
|
+
load root.join(name, 'babot.run').to_s
|
30
60
|
end
|
31
61
|
|
32
62
|
desc "Delete bot [name]"
|
33
63
|
def delete(name)
|
34
|
-
|
64
|
+
cmd "rm -rf '#{root.join name}' '#{root.join name, 'config', 'credentials.yml'}'"
|
35
65
|
end
|
36
66
|
|
37
67
|
desc "Configure bot [name]"
|
38
68
|
def configure(name)
|
39
|
-
|
69
|
+
cmd "#{ENV['EDITOR'] || 'nano'} '#{root.join name, "config", 'credentials.yml'}'"
|
40
70
|
end
|
41
71
|
|
42
72
|
desc "List bots"
|
43
73
|
def list
|
44
|
-
|
74
|
+
cmd "ls '#{root}'"
|
45
75
|
end
|
46
76
|
|
47
|
-
desc "
|
48
|
-
def
|
49
|
-
|
77
|
+
desc "Push to remote server [remote]"
|
78
|
+
def push(remote)
|
79
|
+
cmd "scp -qr '#{root}' '#{remote}:~/.' && ssh '#{remote}' 'babot schedule'"
|
50
80
|
end
|
51
81
|
|
52
|
-
|
53
|
-
def
|
54
|
-
|
82
|
+
private
|
83
|
+
def root
|
84
|
+
Pathname.new(ENV["HOME"]).join ".babot"
|
55
85
|
end
|
56
86
|
|
57
|
-
|
58
|
-
|
59
|
-
|
87
|
+
def cmd(command)
|
88
|
+
puts command
|
89
|
+
system command
|
60
90
|
end
|
61
91
|
end
|
62
92
|
|
data/lib/babot.rb
CHANGED
@@ -1,83 +1,7 @@
|
|
1
|
-
require 'fileutils'
|
2
1
|
require 'twitter'
|
3
|
-
require 'pathname'
|
4
|
-
require 'yaml'
|
5
2
|
|
6
3
|
class Babot
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def update(name)
|
11
|
-
cmd "cd '#{root.join(name)}' && git pull --rebase origin master && bundle install"
|
12
|
-
end
|
13
|
-
|
14
|
-
def schedule
|
15
|
-
list.each do |name|
|
16
|
-
cmd "whenever -i #{name} -f #{root.join(name, 'config', 'schedule.rb')}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def add(name, repository)
|
21
|
-
if repository =~ /^\//
|
22
|
-
cmd "ln -s '#{repository}' '#{root.join(name)}'"
|
23
|
-
else
|
24
|
-
cmd "git clone '#{repository}' '#{root.join(name)}'"
|
25
|
-
end
|
26
|
-
File.open(root.join(name, "config", "credentials.yml").to_s, 'w') do |config|
|
27
|
-
config.write({ 'consumer_key' => "",
|
28
|
-
'consumer_secret' => "",
|
29
|
-
'oauth_token' => "",
|
30
|
-
'oauth_token_secret' => "" }.to_yaml)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def delete(name)
|
35
|
-
cmd "rm -rf '#{root.join(name)}' '#{root.join(name, 'config', 'credentials.yml')}'"
|
36
|
-
end
|
37
|
-
|
38
|
-
def configure(name)
|
39
|
-
cmd "#{ENV['EDITOR'] || 'nano'} '#{root.join(name, "config", 'credentials.yml')}'"
|
40
|
-
end
|
41
|
-
|
42
|
-
def run(name)
|
43
|
-
options = YAML::load_file root.join(name, "config", 'credentials.yml')
|
44
|
-
|
45
|
-
Twitter.configure do |config|
|
46
|
-
config.consumer_key = options['consumer_key']
|
47
|
-
config.consumer_secret = options['consumer_secret']
|
48
|
-
config.oauth_token = options['oauth_token']
|
49
|
-
config.oauth_token_secret = options['oauth_token_secret']
|
50
|
-
end
|
51
|
-
load Babot.root.join(name, 'babot.run').to_s
|
52
|
-
end
|
53
|
-
|
54
|
-
def list
|
55
|
-
Dir.entries(root).reject { |name| name =~ /^\./ }
|
56
|
-
end
|
57
|
-
|
58
|
-
def dump
|
59
|
-
cmd "cd ~ && tar --exclude=.git -cf '#{Dir.pwd}/babot-#{Time.now.to_i}.tar' .babot"
|
60
|
-
end
|
61
|
-
|
62
|
-
def install(dump)
|
63
|
-
cmd "cd ~ && rm -rf '.babot' && tar -xf '#{Dir.pwd}/#{dump}'"
|
64
|
-
end
|
65
|
-
|
66
|
-
def push(remote)
|
67
|
-
cmd "scp -qr '#{root}' '#{remote}:~/.' && ssh '#{remote}' 'babot schedule'"
|
68
|
-
end
|
69
|
-
|
70
|
-
def root
|
71
|
-
Pathname.new(ENV["HOME"]).join ".babot"
|
72
|
-
end
|
73
|
-
|
74
|
-
def cmd(command)
|
75
|
-
puts command
|
76
|
-
system command
|
77
|
-
end
|
78
|
-
|
79
|
-
def run!
|
80
|
-
Twitter.update new.call
|
81
|
-
end
|
4
|
+
def Babot.run!
|
5
|
+
new.call
|
82
6
|
end
|
83
7
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: babot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Goya
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: twitter
|