babot 0.3.0 → 0.3.1

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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -2
  3. data/babot.gemspec +1 -2
  4. data/bin/babot +4 -10
  5. data/lib/babot.rb +26 -54
  6. metadata +1 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0355f66292997601578a1c85085cdfdbe71b2bd8
4
- data.tar.gz: 062379bb8322b364e28e88ec7598e7559d95be41
3
+ metadata.gz: d30a84bef581bba5e575f75254eddf1fa28dca37
4
+ data.tar.gz: c9450ed722b8fcc6add142a6207ff9c95f2048df
5
5
  SHA512:
6
- metadata.gz: dc51c5e669487b96c0bd2277138811f44cc172860fdd003e2a85d95a5d4872a027dfb4102bb205526206e6ea21c9400029fb58cc574f62a913b8af05ee3cc991
7
- data.tar.gz: 550574a9c78c429755ffba815d449c36fd0754894cec238d5d02084d0fba3100efd62abffe96e18d1276aa24b405e89fabe05b4c29ea5ea6652247edc02e972e
6
+ metadata.gz: f3226467734a2827f618b9a074d70f0f3aa23191478755631f82733800b83275832ce3e7da4ddedad54bd1f14c25359236ee4f950bdc04fa3d0aa0ab34eed01d
7
+ data.tar.gz: 257cb4fffdd5c6eeb5df4d671ebff99b1ac859a39f46b16575a4af5ad52384514a8fa551f80320362557566359d60b6cf7cd464365abf9b7df8a7dd48ccc90c7
data/Gemfile.lock CHANGED
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- babot (0.3.0)
5
- activesupport
4
+ babot (0.3.1)
6
5
  boson
7
6
  twitter
8
7
  whenever
data/babot.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'babot'
3
- s.version = '0.3.0'
3
+ s.version = '0.3.1'
4
4
  s.date = '2013-09-08'
5
5
  s.summary = "Babot"
6
6
  s.description = "A simple tool to manage Twitter bots"
@@ -12,7 +12,6 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.require_path = 'lib'
14
14
  s.add_dependency "twitter"
15
- s.add_dependency "activesupport"
16
15
  s.add_dependency "whenever"
17
16
  s.add_dependency "boson"
18
17
 
data/bin/babot CHANGED
@@ -5,8 +5,7 @@ require 'boson/runner'
5
5
  $:.unshift File.expand_path("../../lib", __FILE__)
6
6
  require 'babot'
7
7
 
8
- FileUtils.mkdir_p [Babot.root.join("config"),
9
- Babot.root.join("bots")]
8
+ FileUtils.mkdir_p Babot.root
10
9
 
11
10
  class BabotRunner < Boson::Runner
12
11
  desc "Update bot [name]"
@@ -19,14 +18,9 @@ class BabotRunner < Boson::Runner
19
18
  Babot.schedule
20
19
  end
21
20
 
22
- desc "Call bot [name]"
23
- def call(name)
24
- Babot.call name
25
- end
26
-
27
- desc "Call bot [name] without update"
28
- def dry(name)
29
- puts Babot.dry(name)
21
+ desc "Run bot [name]"
22
+ def run(name)
23
+ Babot.run name
30
24
  end
31
25
 
32
26
  desc "Add bot [name] from [repository]"
data/lib/babot.rb CHANGED
@@ -1,43 +1,29 @@
1
1
  require 'fileutils'
2
- require 'git'
3
2
  require 'twitter'
4
3
  require 'pathname'
5
4
  require 'yaml'
6
- require 'tempfile'
7
- require 'whenever'
8
- require 'active_support/core_ext/string/inflections'
9
- require 'bundler/cli'
10
5
 
11
6
  class Babot
12
7
 
13
8
  class << self
14
9
 
15
10
  def update(name)
16
- run "cd '#{root.join('bots', name)}' && git pull --rebase origin master"
17
- run "cd '#{root.join('bots', name)}' && bundle install"
11
+ cmd "cd '#{root.join(name)}' && git pull --rebase origin master && bundle install"
18
12
  end
19
13
 
20
14
  def schedule
21
- Tempfile.open('schedule') do |cron|
22
- cron.puts(list.map { |name| instanciate(name) }.map do |bot|
23
- <<-eos
24
- every '#{bot.when}' do
25
- command 'cd #{root.join('bots', bot.name)} && bundle exec babot call #{bot.name}'
26
- end
27
- eos
28
- end)
29
- cron.flush
30
- run "whenever -w -f '#{cron.path}'"
15
+ list.each do |name|
16
+ cmd "whenever -i #{name} -f #{root.join(name, 'config', 'schedule.rb')}"
31
17
  end
32
18
  end
33
19
 
34
20
  def add(name, repository)
35
- if repository =~ /\//
36
- run "ln -s '#{repository}' '#{root.join("bots", name)}'"
21
+ if repository =~ /^\//
22
+ cmd "ln -s '#{repository}' '#{root.join(name)}'"
37
23
  else
38
- run "git clone '#{repository}' '#{root.join("bots", name)}'"
24
+ cmd "git clone '#{repository}' '#{root.join(name)}'"
39
25
  end
40
- File.open(root.join("config", name).to_s, 'w') do |config|
26
+ File.open(root.join(name, "config", "credentials.yml").to_s, 'w') do |config|
41
27
  config.write({ 'consumer_key' => "",
42
28
  'consumer_secret' => "",
43
29
  'oauth_token' => "",
@@ -46,66 +32,52 @@ class Babot
46
32
  end
47
33
 
48
34
  def delete(name)
49
- run "rm -rf #{root.join('bots', name)} #{root.join('config', name)}"
35
+ cmd "rm -rf '#{root.join(name)}' '#{root.join(name, 'config', 'credentials.yml')}'"
50
36
  end
51
37
 
52
38
  def configure(name)
53
- run "#{ENV['EDITOR'] || 'nano'} #{root.join("config", name).to_s}"
39
+ cmd "#{ENV['EDITOR'] || 'nano'} '#{root.join(name, "config", 'credentials.yml')}'"
54
40
  end
55
41
 
56
- def call(name)
57
- Twitter.update dry(name)
58
- end
42
+ def run(name)
43
+ options = YAML::load_file root.join(name, "config", 'credentials.yml')
59
44
 
60
- def list
61
- Dir.entries(root.join "bots").reject { |name| name =~ /^\./ }
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
62
52
  end
63
53
 
64
- def dry(name)
65
- instanciate(name).call
54
+ def list
55
+ Dir.entries(root).reject { |name| name =~ /^\./ }
66
56
  end
67
57
 
68
58
  def dump
69
- run "cd ~ && tar --exclude=.git -cf '#{Dir.pwd}/babot-#{Time.now.to_i}.tar' .babot"
59
+ cmd "cd ~ && tar --exclude=.git -cf '#{Dir.pwd}/babot-#{Time.now.to_i}.tar' .babot"
70
60
  end
71
61
 
72
62
  def install(dump)
73
- run "cd ~ && rm -rf '.babot' && tar -xf '#{Dir.pwd}/#{dump}'"
63
+ cmd "cd ~ && rm -rf '.babot' && tar -xf '#{Dir.pwd}/#{dump}'"
74
64
  end
75
65
 
76
66
  def push(remote)
77
- run "scp -qr '#{root}' '#{remote}:~/.' && ssh '#{remote}' 'babot schedule'"
78
- end
79
-
80
- def instanciate(name)
81
- require Babot.root.join("bots", name, 'lib', name)
82
-
83
- options = YAML.load_file(root.join("config", name))
84
- Babot::const_get(name.camelize).new(name, options)
85
- rescue StandardError, ScriptError => error
86
- puts error, error.backtrace
67
+ cmd "scp -qr '#{root}' '#{remote}:~/.' && ssh '#{remote}' 'babot schedule'"
87
68
  end
88
69
 
89
70
  def root
90
71
  Pathname.new(ENV["HOME"]).join ".babot"
91
72
  end
92
73
 
93
- def run(command)
74
+ def cmd(command)
94
75
  puts command
95
76
  system command
96
77
  end
97
- end
98
-
99
- attr_accessor :name
100
-
101
- def initialize(name, options)
102
- @name = name
103
78
 
104
- Twitter.configure do |config|
105
- config.consumer_key = options['consumer_key']
106
- config.consumer_secret = options['consumer_secret']
107
- config.oauth_token = options['oauth_token']
108
- config.oauth_token_secret = options['oauth_token_secret']
79
+ def run!
80
+ Twitter.update new.call
109
81
  end
110
82
  end
111
83
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Goya
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: activesupport
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: whenever
43
29
  requirement: !ruby/object:Gem::Requirement