class TwitterBotGenerator

Constants

VERSION

Public Class Methods

generate(bot_name, flag='') click to toggle source
# File lib/twitter_bot_generator.rb, line 9
def generate bot_name, flag=''
  welcome_message bot_name, flag
  make_directories! bot_name
  write_files! bot_name, flag
  exit_message bot_name
end

Protected Class Methods

exit_message(bot_name) click to toggle source
# File lib/twitter_bot_generator.rb, line 48
def exit_message bot_name
  puts 'done generating! your turn now!'
  puts "$ cd #{bot_name}"
  puts '$ bundle install'
  puts '$ ruby test.rb'
  puts '$ ruby spec.rb'
  puts 'HAVE FUN BE SAFE PLAY NICE'
end
make_directories!(bot_name) click to toggle source
# File lib/twitter_bot_generator.rb, line 28
def make_directories! bot_name
  Dir.mkdir bot_name
  puts "mkdir #{bot_name}/"
  folders.each do |folder|
    folder_path = File.join bot_name, folder
    Dir.mkdir folder_path
    puts "mkdir #{folder_path}/"
  end
end
welcome_message(bot_name, flag) click to toggle source
# File lib/twitter_bot_generator.rb, line 18
def welcome_message bot_name, flag
  descriptor = ''
  if flag == '--streaming' || flag == '-S'
    descriptor = 'streaming '
  elsif flag == '--userstream' || flag == '-U'
    descriptor = 'userstream '
  end
  puts "scaffolding a #{descriptor}twitter bot named #{bot_name}!"
end
write_files!(bot_name, flag) click to toggle source
# File lib/twitter_bot_generator.rb, line 38
def write_files! bot_name, flag
  (files bot_name, flag).each do |(file_name, contents)|
    file_path = File.join bot_name, file_name
    puts "touch #{file_path}"
    File.open file_path, 'w' do |f|
      f.write contents
    end
  end
end

Private Class Methods

camelize(str) click to toggle source
# File lib/twitter_bot_generator.rb, line 101
def camelize str
  ((str.split '_').map &:capitalize).join
end
files(bot_name, flag) click to toggle source
# File lib/twitter_bot_generator.rb, line 63
def files bot_name, flag
  varz = grab_a_binding_for bot_name
  {
    'bot.rb' => (render_code 'bot.rb', varz),
    '.gitignore' => (render_code '.gitignore', varz),
    '.travis.yml' => (render_code '.travis.yml', varz),
    'Gemfile' => (render_code 'Gemfile', varz),
    'README.md' => (render_code 'README.md', varz),
    'Procfile' => (render_code 'Procfile', varz),
    'spec.rb' => (render_code 'spec.rb', varz),
    'test.rb' => (render_code 'test.rb', varz),
    "test/#{bot_name}_test.rb" => (render_code 'test/test_bot_test.rb', varz),
    "src/#{bot_name}.rb" => (render_code 'src/test_bot.rb', varz),
    'lib/greetings.txt' => (render_code 'lib/greetings.txt', varz)
  }.tap do |filz|
    if flag == '--streaming' || flag == '-S'
      filz['bot.rb'] = (render_code 'streaming-bot.rb', varz)
      filz['spec.rb'] = (render_code 'streaming-spec.rb', varz)
      filz["test/#{bot_name}_test.rb"] = (render_code 'test/streaming-test_bot_test.rb', varz)
      filz["src/#{bot_name}.rb"] = (render_code 'src/streaming-test_bot.rb', varz)
    elsif flag == '--userstream' || flag == '-U'
      filz['bot.rb'] = (render_code 'userstream-bot.rb', varz)
      filz['spec.rb'] = (render_code 'userstream-spec.rb', varz)
      filz["test/#{bot_name}_test.rb"] = (render_code 'test/userstream-test_bot_test.rb', varz)
      filz["src/#{bot_name}.rb"] = (render_code 'src/userstream-test_bot.rb', varz)
    end
  end
end
folders() click to toggle source
# File lib/twitter_bot_generator.rb, line 59
def folders
  %w(lib src test)
end
get_template(file_name) click to toggle source
# File lib/twitter_bot_generator.rb, line 105
def get_template file_name
  template = read_file file_name
  ERB.new template, nil, "%"
end
grab_a_binding_for(bot_name) click to toggle source
# File lib/twitter_bot_generator.rb, line 92
def grab_a_binding_for bot_name
  openstructicon = OpenStruct.new bot_name: bot_name, class_name: (camelize bot_name)
  openstructicon.instance_eval { binding }
end
read_file(file_name) click to toggle source
# File lib/twitter_bot_generator.rb, line 110
def read_file file_name
  home_sweet_home = File.expand_path File.dirname __FILE__
  ultimate_pathway = File.join home_sweet_home, '/twitter_bot_generator/templates/', "#{file_name}.erb"
  File.read ultimate_pathway
end
render_code(file_name, varz) click to toggle source
# File lib/twitter_bot_generator.rb, line 97
def render_code file_name, varz
  (get_template file_name).result varz
end