twitter_bot_generator 0.1.0
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 +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +23 -0
- data/Rakefile +9 -0
- data/bin/twitter_bot_generator +9 -0
- data/lib/twitter_bot_generator/version.rb +4 -0
- data/lib/twitter_bot_generator.rb +57 -0
- data/test/scaffold_generator_test.rb +108 -0
- data/twitter_bot_generator.gemspec +25 -0
- metadata +113 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 83d96ec619fe3d997813fb6cbdca003e117cee26
|
4
|
+
data.tar.gz: 41007b223c3fd32fb5dc1d77e51fce1b8d7c900c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a66617be34bc4f414739af2e36b7981b81d070ebea6895fea4068ff90262b23f000bb9661176cd3dcf9b36454bad5e39eccec73784e4b71e0df28713888594cc
|
7
|
+
data.tar.gz: 14614877fca4c46bf451fd3e8d90b371c12554abfcfc8906a88060d692c0053a128304efc13f96659db6ef4024f62812fe1df6726435dab272e383ed89048c0e
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Cole Willsea
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Twitter::Bot::Generator
|
2
|
+
|
3
|
+
I GENERATE TWITTER BOTS! FUN!
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
$ gem install twitter_bot_generator
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
|
11
|
+
$ twitter_bot_generator yr_bot_name_snake_case_style_yes
|
12
|
+
|
13
|
+
This gem was made for use in the twitter-art-robot-[tutorial](http://github.com/coleww/twitter-art-tutorial)
|
14
|
+
|
15
|
+
More examples and documentation will be available there when it is created :dancers:
|
16
|
+
|
17
|
+
## TODO
|
18
|
+
|
19
|
+
handle CLI errors better
|
20
|
+
|
21
|
+
--markov flag. chuck .txt in lib and set it loose
|
22
|
+
|
23
|
+
--db flag to get a mini AR::Base thing
|
data/Rakefile
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require_relative 'twitter_bot_generator/version.rb'
|
2
|
+
|
3
|
+
class TwitterBotGenerator
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def generate bot_name
|
8
|
+
puts "scaffolding a twitter bot that is named #{bot_name}!"
|
9
|
+
Dir.mkdir bot_name
|
10
|
+
dirname = "#{bot_name}/"
|
11
|
+
puts "mkdir #{dirname}"
|
12
|
+
folders.each do |folder|
|
13
|
+
Dir.mkdir dirname + folder
|
14
|
+
puts "mkdir #{dirname + folder}"
|
15
|
+
end
|
16
|
+
(files bot_name).each do |(file_name, contents)|
|
17
|
+
puts "touch #{dirname}#{file_name}"
|
18
|
+
File.open bot_name + '/' + file_name, 'w' do |f|
|
19
|
+
f.write contents
|
20
|
+
end
|
21
|
+
end
|
22
|
+
puts 'done generating! your turn now!'
|
23
|
+
puts "$ cd #{bot_name}"
|
24
|
+
puts '$ bundle install'
|
25
|
+
puts '$ ./test.rb'
|
26
|
+
puts '$ ./spec.rb'
|
27
|
+
puts 'HAVE FUN BE SAFE PLAY NICE'
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def folders
|
33
|
+
%w(lib src test)
|
34
|
+
end
|
35
|
+
|
36
|
+
def files bot_name
|
37
|
+
{
|
38
|
+
'bot.rb' => "require_relative 'src/#{bot_name}.rb'\nrequire 'twitter'\ntwitter = Twitter::REST::Client.new do |config|\n config.consumer_key = ENV['TWITTER_CONSUMER_KEY']\n config.consumer_secret = ENV['TWITTER_CONSUMER_SECRET']\n config.access_token = ENV['TWITTER_ACCESS_TOKEN']\n config.access_token_secret = ENV['TWITTER_ACCESS_SECRET']\nend\n\nloop do\n begin\n twitter.update #{camelize bot_name}.generate\n ensure\n sleep 10800 + (rand 5400)\n end\nend\n",
|
39
|
+
'.gitignore' => ".DS_Store\n*/.DS_Store\nnotes.todo\n",
|
40
|
+
'Gemfile' => "source 'https://rubygems.org'\nruby '2.0.0'\ngem 'twitter'\n",
|
41
|
+
'README.md' => "\# #{bot_name}\nA Twitter Bot\n\n[Template created with Twitter_Bot_Generator#{}](https://github.com/coleww/twitter_bot_generator)",
|
42
|
+
'Procfile' => "bot: ruby bot.rb\n",
|
43
|
+
'spec.rb' => "#!/usr/bin/env ruby\nrequire_relative 'src/#{bot_name}'\n12.times { puts #{camelize bot_name}.generate }",
|
44
|
+
'test.rb' => "#!/usr/bin/env ruby\n\nDir.glob('./test/*_test.rb').each { |file| require file }",
|
45
|
+
"test/#{bot_name}_test.rb" => "require 'minitest/autorun'\nrequire_relative '../src/#{bot_name}.rb'\n\nclass Test#{camelize bot_name} < MiniTest::Test\n def test_generate_returns_hello_world\n assert_match /Hello/, #{camelize bot_name}.generate\n end\n def test_hides_greetings\n refute_respond_to #{camelize bot_name}, :greetings\n end\n def test_hides_io_metal\n refute_respond_to #{camelize bot_name}, :load_txt_file\n end\nend",
|
46
|
+
"src/#{bot_name}.rb" => "class #{camelize bot_name}\n\n class << self\n\n def generate\n greetings.sample\n end\n\n protected\n\n def greetings\n ['Hello World!', 'Hello Twitter!', 'Hello Ruby!']\n end\n\n private\n\n def load_txt_file file_name\n (File.readlines (File.join (File.dirname __FILE__), '..', 'lib', file_name)).map &:chomp\n end\n\n end\n\nend\n",
|
47
|
+
'lib/.gitkeep' => 'lol'
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
def camelize str
|
52
|
+
((str.split '_').map &:capitalize).join
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'minitest/pride'
|
4
|
+
|
5
|
+
require_relative "../lib/twitter_bot_generator.rb"
|
6
|
+
|
7
|
+
# before :all do
|
8
|
+
TwitterBotGenerator.generate 'such_test_bot'
|
9
|
+
|
10
|
+
# Running the test suite for the generated bot
|
11
|
+
require_relative '../such_test_bot/test/such_test_bot_test.rb'
|
12
|
+
|
13
|
+
class TestTwitterBotGenerator < MiniTest::Test
|
14
|
+
|
15
|
+
def test_it_creates_an_app_directory
|
16
|
+
assert_equal true, (Dir.exists? './such_test_bot')
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_it_creates_a_lib_directory
|
20
|
+
assert_equal true, (Dir.exists? './such_test_bot/lib')
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_it_creates_a_src_directory
|
24
|
+
assert_equal true, (Dir.exists? './such_test_bot/src')
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_it_creates_a_test_directory
|
28
|
+
assert_equal true, (Dir.exists? './such_test_bot/test')
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_it_creates_a_botfile
|
32
|
+
assert_equal true, (File.exists? './such_test_bot/bot.rb')
|
33
|
+
assert_match /require_relative 'src\/such_test_bot.rb'/, (File.read './such_test_bot/bot.rb')
|
34
|
+
assert_match /SuchTestBot.generate/, (File.read './such_test_bot/bot.rb')
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_it_creates_a_gitignore
|
38
|
+
assert_equal true, (File.exists? './such_test_bot/.gitignore')
|
39
|
+
assert_match /.DS_Store/, (File.read './such_test_bot/.gitignore')
|
40
|
+
assert_match /notes.todo/, (File.read './such_test_bot/.gitignore')
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_it_creates_a_gemfile
|
44
|
+
assert_equal true, (File.exists? './such_test_bot/Gemfile')
|
45
|
+
assert_match /gem 'twitter'/, (File.read './such_test_bot/Gemfile')
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_it_creates_a_readme
|
49
|
+
assert_equal true, (File.exists? './such_test_bot/README.md')
|
50
|
+
assert_match /\# such_test_bot\nA Twitter Bot/, (File.read './such_test_bot/README.md')
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_it_creates_a_procfile
|
54
|
+
assert_equal true, (File.exists? './such_test_bot/Procfile')
|
55
|
+
assert_match /bot: ruby bot.rb\n/, (File.read './such_test_bot/Procfile')
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_it_creates_a_spec_runner
|
59
|
+
assert_equal true, (File.exists? './such_test_bot/spec.rb')
|
60
|
+
assert_match /12.times { puts SuchTestBot.generate }/, (File.read './such_test_bot/spec.rb')
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_it_creates_a_test_runner
|
64
|
+
assert_equal true, (File.exists? './such_test_bot/test.rb')
|
65
|
+
assert_match /Dir.glob('.\/test\/*_test.rb').each { |file| require file }/, (File.read './such_test_bot/test.rb')
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_it_creates_a_smokescreen_test
|
70
|
+
assert_equal true, (File.exists? './such_test_bot/test/such_test_bot_test.rb')
|
71
|
+
assert_match /class TestSuchTestBot/, (File.read './such_test_bot/test/such_test_bot_test.rb')
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_it_creates_boilerplate_class_file
|
75
|
+
assert_equal true, (File.exists? './such_test_bot/src/such_test_bot.rb')
|
76
|
+
assert_match /class SuchTestBot/, (File.read './such_test_bot/src/such_test_bot.rb')
|
77
|
+
assert_match /def generate/, (File.read './such_test_bot/src/such_test_bot.rb')
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_it_creates_bin_slash_gitkeep
|
81
|
+
assert_equal true, (File.exists? './such_test_bot/lib/.gitkeep')
|
82
|
+
assert_match /lol/, (File.read './such_test_bot/lib/.gitkeep')
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_camelize
|
86
|
+
klass = TwitterBotGenerator.send :camelize, 'testing_the_thing'
|
87
|
+
assert_equal 'TestingTheThing', klass
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
MiniTest::Unit.after_tests do
|
93
|
+
['./such_test_bot/Gemfile',
|
94
|
+
'./such_test_bot/README.md',
|
95
|
+
'./such_test_bot/test.rb',
|
96
|
+
'./such_test_bot/Procfile',
|
97
|
+
'./such_test_bot/bot.rb',
|
98
|
+
'./such_test_bot/spec.rb',
|
99
|
+
'./such_test_bot/test/such_test_bot_test.rb',
|
100
|
+
'./such_test_bot/lib/.gitkeep',
|
101
|
+
'./such_test_bot/src/such_test_bot.rb',
|
102
|
+
'./such_test_bot/.gitignore'].each { |file| File.unlink file }
|
103
|
+
|
104
|
+
['./such_test_bot/lib',
|
105
|
+
'./such_test_bot/src',
|
106
|
+
'./such_test_bot/test',
|
107
|
+
'./such_test_bot'].each { |dir| Dir.rmdir dir }
|
108
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'twitter_bot_generator/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "twitter_bot_generator"
|
8
|
+
spec.version = TwitterBotGenerator::VERSION
|
9
|
+
spec.authors = ["Cole Willsea"]
|
10
|
+
spec.email = ["coleww@gmail.com"]
|
11
|
+
spec.summary = %q{WIP DONUT USE! Generates a twitter bot template from command line.}
|
12
|
+
spec.description = %q{WIP DONUT USE! gem install twitter_bot_generator && twitter_bot_generator new_twitter_bot}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = ['twitter_bot_generator']
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency 'test_construct'
|
24
|
+
spec.add_development_dependency 'minitest'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: twitter_bot_generator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Cole Willsea
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-08-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: test_construct
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: WIP DONUT USE! gem install twitter_bot_generator && twitter_bot_generator
|
70
|
+
new_twitter_bot
|
71
|
+
email:
|
72
|
+
- coleww@gmail.com
|
73
|
+
executables:
|
74
|
+
- twitter_bot_generator
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- .gitignore
|
79
|
+
- Gemfile
|
80
|
+
- LICENSE.txt
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- bin/twitter_bot_generator
|
84
|
+
- lib/twitter_bot_generator.rb
|
85
|
+
- lib/twitter_bot_generator/version.rb
|
86
|
+
- test/scaffold_generator_test.rb
|
87
|
+
- twitter_bot_generator.gemspec
|
88
|
+
homepage: ''
|
89
|
+
licenses:
|
90
|
+
- MIT
|
91
|
+
metadata: {}
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
requirements: []
|
107
|
+
rubyforge_project:
|
108
|
+
rubygems_version: 2.3.0
|
109
|
+
signing_key:
|
110
|
+
specification_version: 4
|
111
|
+
summary: WIP DONUT USE! Generates a twitter bot template from command line.
|
112
|
+
test_files:
|
113
|
+
- test/scaffold_generator_test.rb
|