babot 0.1.2 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e24132e29e1b5d54fb5440a0c9151d6bcb3f943d
4
- data.tar.gz: a06c9953f0895ad025c9f9f3e14897158963df0e
3
+ metadata.gz: eb8a45434ea899ca641bf88e57fd8234f5c099f8
4
+ data.tar.gz: fc78fb184612d1662a6874f036a54539bb6ec24c
5
5
  SHA512:
6
- metadata.gz: f0550fc34d47d1fa9d94a8f5857dd8cd48593b7bbb07e5174fc0ed35facc3aeba02362541471e09ea932c8de91f4af453ff23df27ba88f01cd3ecd00f1ceae5d
7
- data.tar.gz: 217cbbe19c73cd527e077c85ea58b18c1f0dfd9d7fc76d5efd13adf039fb171649937780c43d6ab2a2553c0daa0c0638fa9ec4e28a6ec1ad38d18cc482b967ce
6
+ metadata.gz: c7017c77bf5c724288ff87bae98191f668a756e0148dcd7b88b5f65556690cbdacbace9ca4297e34e77e89e5e7ca0da1d745d74c34cb7bde2f7ce49d37a596f4
7
+ data.tar.gz: c220fc560c8faf77d4f744716f37cc8f04abc8826b71f727b84a322c7723b74ff642029d0ded1b1c184fc8e364385b804049b4367ced4d95d5aa389055684612
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- babot (0.1.0)
4
+ babot (0.1.3)
5
5
  activesupport
6
+ boson
6
7
  capistrano
7
8
  capistrano-af83
8
- gaston
9
9
  git
10
10
  rake
11
11
  rvm-capistrano
@@ -22,7 +22,8 @@ GEM
22
22
  thread_safe (~> 0.1)
23
23
  tzinfo (~> 0.3.37)
24
24
  addressable (2.3.5)
25
- atomic (1.1.10)
25
+ atomic (1.1.12)
26
+ boson (1.2.4)
26
27
  capistrano (2.15.5)
27
28
  highline
28
29
  net-scp (>= 1.0.0)
@@ -50,12 +51,9 @@ GEM
50
51
  chronic (0.9.1)
51
52
  faraday (0.8.8)
52
53
  multipart-post (~> 1.2.0)
53
- gaston (0.4.1)
54
- inflecto
55
54
  git (1.2.5)
56
55
  highline (1.6.19)
57
56
  i18n (0.6.4)
58
- inflecto (0.0.2)
59
57
  json (1.8.0)
60
58
  mime-types (1.23)
61
59
  minitest (4.7.5)
@@ -69,13 +67,13 @@ GEM
69
67
  net-ssh-gateway (1.2.0)
70
68
  net-ssh (>= 2.6.5)
71
69
  rake (10.1.0)
72
- rvm-capistrano (1.4.1)
73
- capistrano (>= 2.0.0)
70
+ rvm-capistrano (1.4.3)
71
+ capistrano (>= 2.15.4)
74
72
  shout-bot (0.0.4)
75
73
  addressable
76
74
  simple_oauth (0.2.0)
77
75
  sushi (0.0.2)
78
- thread_safe (0.1.0)
76
+ thread_safe (0.1.2)
79
77
  atomic
80
78
  twitter (4.8.1)
81
79
  faraday (~> 0.8, < 0.10)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  Babot helps you manage your Twitter bots.
2
2
 
3
- The file `config/gaston/bots.yml` contains, for each bot, the git
3
+ The file `~/.babot/config` contains, for each bot, the git
4
4
  repository and the API keys.
5
5
 
6
6
  A bot is a git repository containing :
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'babot'
3
- s.version = '0.1.2'
3
+ s.version = '0.1.5'
4
4
  s.date = '2013-09-08'
5
5
  s.summary = "Babot"
6
6
  s.description = "A simple tool to manage Twitter bots"
@@ -12,12 +12,14 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.require_path = 'lib'
14
14
  s.add_dependency "twitter"
15
- s.add_dependency "gaston"
16
15
  s.add_dependency "git"
17
16
  s.add_dependency "activesupport"
18
17
  s.add_dependency "whenever"
19
18
  s.add_dependency "rake"
19
+ s.add_dependency "boson"
20
20
  s.add_dependency "capistrano"
21
21
  s.add_dependency "capistrano-af83"
22
22
  s.add_dependency "rvm-capistrano"
23
+
24
+ s.executables = ['babot']
23
25
  end
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'boson/runner'
4
+ require 'pathname'
5
+
6
+ $:.unshift File.expand_path("../../lib", __FILE__)
7
+ require 'babot'
8
+
9
+ class BabotRunner < Boson::Runner
10
+ desc "Update bots"
11
+ def update
12
+ Babot.update
13
+ end
14
+
15
+ desc "Update crontab"
16
+ def schedule
17
+ Babot.schedule
18
+ end
19
+
20
+ desc "Call bot [name]"
21
+ def call(name)
22
+ Babot.call name
23
+ end
24
+
25
+ desc "Call bot [name] without update"
26
+ def dry(name)
27
+ puts Babot.dry(name)
28
+ end
29
+
30
+ desc "Add bot [name] from [repository]"
31
+ def add(name, repository)
32
+ Babot.add name, repository
33
+ Babot.configure name
34
+ Babot.update
35
+ end
36
+
37
+ desc "Delete bot [name]"
38
+ def delete(name)
39
+ Babot.delete name
40
+ end
41
+
42
+ desc "Configure bot [name]"
43
+ def configure(name)
44
+ Babot.configure name
45
+ end
46
+ end
47
+
48
+ BabotRunner.start
@@ -1,13 +1,3 @@
1
- require 'gaston'
2
- require 'fileutils'
3
- require 'git'
4
- require 'twitter'
5
- require 'active_support/core_ext/string/inflections'
6
1
 
7
- Gaston.configure do |gaston|
8
- gaston.env = ENV["RACK_ENV"] || "development"
9
- gaston.files = Dir["./config/gaston/**/*.yml"]
10
- end
11
2
 
12
- require 'bot'
13
- require 'bots/twitter_bot'
3
+ require './lib/babot'
@@ -1 +1,93 @@
1
- require 'bot'
1
+ require 'fileutils'
2
+ require 'git'
3
+ require 'twitter'
4
+ require 'pathname'
5
+ require 'yaml'
6
+ require 'tempfile'
7
+ require 'active_support/core_ext/string/inflections'
8
+
9
+ class Babot
10
+
11
+ class << self
12
+
13
+ def update
14
+ Dir["#{bots_root}/*"].each do |repository|
15
+ Git.open(repository).pull
16
+ end
17
+ end
18
+
19
+ def schedule
20
+ File.open(root.join("schedule.rb"), "w") do |schedule|
21
+ @@config['bots'].map do |name, options|
22
+ bot = instanciate name, options
23
+ schedule.puts <<-eos
24
+ every '#{bot.when}' do
25
+ rake 'bots:call[#{name}]'
26
+ end
27
+ eos
28
+ end
29
+ Whenever::CommandLine.execute(file: schedule.path, write: true)
30
+ end
31
+ end
32
+
33
+ def add(name, repository)
34
+ Git.clone repository, bot_root(name)
35
+ File.open(root.join("config", name).to_s, 'w') do |config|
36
+ config.write({ 'consumer_key' => "",
37
+ 'consumer_secret' => "",
38
+ 'oauth_token' => "",
39
+ 'oauth_token_secret' => "" }.to_yaml)
40
+ end
41
+ end
42
+
43
+ def delete(name)
44
+ FileUtils.rm_rf bot_root(name)
45
+ FileUtils.rm_f config_root.join(name)
46
+ end
47
+
48
+ def configure(name)
49
+ system "#{ENV['EDITOR'] || 'nano'} #{root.join("config", name).to_s}"
50
+ end
51
+
52
+ def call(name)
53
+ Twitter.update dry(name)
54
+ end
55
+
56
+ def dry(name)
57
+ instanciate(name, YAML.load_file(config_root.join name)).call
58
+ end
59
+
60
+ def instanciate(name, config)
61
+ require Babot.bot_root(name).join('lib', name)
62
+
63
+ Babot::const_get(name.camelize).new(name)
64
+ rescue StandardError, ScriptError => error
65
+ puts error, error.backtrace
66
+ end
67
+
68
+ def root
69
+ Pathname.new(ENV["HOME"]).join ".babot"
70
+ end
71
+
72
+ def bots_root
73
+ root.join("bots")
74
+ end
75
+
76
+ def config_root
77
+ root.join("config")
78
+ end
79
+
80
+ def bot_root(name)
81
+ bots_root.join name
82
+ end
83
+ end
84
+
85
+ def initialize(options)
86
+ Twitter.configure do |config|
87
+ config.consumer_key = options['consumer_key']
88
+ config.consumer_secret = options['consumer_secret']
89
+ config.oauth_token = options['oauth_token']
90
+ config.oauth_token_secret = options['oauth_token_secret']
91
+ end
92
+ end
93
+ 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.1.2
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Goya
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: gaston
28
+ name: git
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '>='
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: git
42
+ name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '>='
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: activesupport
56
+ name: whenever
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '>='
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: whenever
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '>='
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rake
84
+ name: boson
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '>='
@@ -138,7 +138,8 @@ dependencies:
138
138
  version: '0'
139
139
  description: A simple tool to manage Twitter bots
140
140
  email: goya.victor@gmail.com
141
- executables: []
141
+ executables:
142
+ - babot
142
143
  extensions: []
143
144
  extra_rdoc_files: []
144
145
  files:
@@ -147,15 +148,12 @@ files:
147
148
  - Gemfile
148
149
  - Gemfile.lock
149
150
  - README.md
150
- - Rakefile
151
151
  - babot.gemspec
152
+ - bin/babot
152
153
  - config/boot.rb
153
154
  - config/deploy.rb
154
155
  - config/deploy/production.rb
155
- - config/gaston/bots.yml.sample
156
156
  - lib/babot.rb
157
- - lib/bot.rb
158
- - lib/tasks/bots.rake
159
157
  homepage: https://github.com/phorque/babot
160
158
  licenses:
161
159
  - MIT
data/Rakefile DELETED
@@ -1,5 +0,0 @@
1
- $:.unshift File.expand_path('../lib', __FILE__)
2
-
3
- Dir["./lib/tasks/*.rake"].each do |file|
4
- import file
5
- end
@@ -1,8 +0,0 @@
1
- :gaston:
2
- bots:
3
- test:
4
- :repository: git@github.com:phorque/twitter-test-bot.git
5
- :consumer_key: lol
6
- :consumer_secret: lol
7
- :oauth_token: lol
8
- :oauth_token_secret: lol
data/lib/bot.rb DELETED
@@ -1,53 +0,0 @@
1
- module Babot
2
- class Bot
3
- attr_accessor :name, :repository
4
-
5
- def Bot.instanciate(name, options)
6
- require "./#{Babot::Bot.path(name)}"
7
-
8
- Babot::const_get(name.camelize).new(name, options)
9
- rescue StandardError, ScriptError => error
10
- puts error, error.backtrace
11
- end
12
-
13
- def Bot.update(name, options)
14
- unless File.exists? root(name)
15
- clone name, options[:repository]
16
- end
17
- Bot.instanciate(name, options).pull!
18
- end
19
-
20
- def Bot.clone(name, repository)
21
- Git.clone repository, Pathname.new("bots").join(name)
22
- end
23
-
24
- def Bot.root(name)
25
- Pathname.new("bots").join name
26
- end
27
-
28
- def Bot.path(name)
29
- Bot.root(name).join "lib", name
30
- end
31
-
32
- def initialize(name, options)
33
- @name = name
34
- end
35
-
36
- def pull!
37
- git.pull
38
- end
39
-
40
- protected
41
- def root
42
- Bot.root name
43
- end
44
-
45
- def path
46
- Bot.path name
47
- end
48
-
49
- def git
50
- @git ||= Git.open(root)
51
- end
52
- end
53
- end
@@ -1,41 +0,0 @@
1
- require './config/boot'
2
-
3
- namespace :bots do
4
- desc "update bots code and schedule"
5
- task update: [:update_code, :schedule]
6
-
7
- desc "update bots code"
8
- task :update_code do |t, args|
9
- Gaston.bots.map do |name, options|
10
- Babot::Bot.update name, options
11
- end
12
- end
13
-
14
- desc "update bots schedule"
15
- task :schedule do |t, args|
16
- schedule = File.open("bots/schedule.rb", "w")
17
- Gaston.bots.map do |name, options|
18
- bot = Babot::Bot.instanciate name, options
19
- schedule.puts <<-eos
20
- every '#{bot.when}' do
21
- rake 'bots:call[#{name}]'
22
- end
23
- eos
24
- end
25
- schedule.close
26
- end
27
-
28
- desc "call the bot"
29
- task :call, :name do |t, args|
30
- options = Gaston.bots[args[:name]]
31
- Twitter.configure do |config|
32
- config.consumer_key = options.consumer_key
33
- config.consumer_secret = options.consumer_secret
34
- config.oauth_token = options.oauth_token
35
- config.oauth_token_secret = options.oauth_token_secret
36
- end
37
- Babot::Bot.instanciate(args[:name], options).call.tap do |tweet|
38
- Twitter.update tweet
39
- end
40
- end
41
- end