class Botup::FileProcessor

Constants

FILE_NAMES_TO_SKIP

Attributes

base_name[R]

Public Class Methods

new(base_name) click to toggle source
# File lib/botup/file_processor.rb, line 11
def initialize(base_name)
  @base_name = base_name
end

Public Instance Methods

call() click to toggle source
# File lib/botup/file_processor.rb, line 15
def call
  prepare_files
  populate_basic_templates(templates_folder, output_main_folder)
  populate_bot_named_files("#{templates_folder}/core_file.erb", "#{output_lib_folder}/#{base_name}.rb")
  populate_bot_named_files("#{bin_folder}/exec.erb", "#{output_folder}/bin/#{base_name}")
  FileUtils.chmod('+x', "#{output_folder}/bin/#{base_name}")
end

Private Instance Methods

bin_folder() click to toggle source
# File lib/botup/file_processor.rb, line 53
def bin_folder
  "#{__dir__}/bin"
end
class_name() click to toggle source
# File lib/botup/file_processor.rb, line 90
def class_name
  base_name.split('_').collect(&:capitalize).join
end
config_folder() click to toggle source
# File lib/botup/file_processor.rb, line 57
def config_folder
  "#{__dir__}/config"
end
core_file() click to toggle source
# File lib/botup/file_processor.rb, line 65
def core_file
  "#{templates_folder}/bot.erb"
end
current_dir() click to toggle source
# File lib/botup/file_processor.rb, line 81
def current_dir
  Dir.pwd
end
namespace() click to toggle source
# File lib/botup/file_processor.rb, line 85
def namespace
  OpenStruct.new(class_name: class_name,
                 snake_case_name: base_name)
end
output_folder() click to toggle source
# File lib/botup/file_processor.rb, line 73
def output_folder
  "#{current_dir}/#{base_name}"
end
output_lib_folder() click to toggle source
# File lib/botup/file_processor.rb, line 69
def output_lib_folder
  "#{output_folder}/lib/"
end
output_main_folder() click to toggle source
# File lib/botup/file_processor.rb, line 77
def output_main_folder
  "#{output_folder}/lib/#{base_name}"
end
populate_basic_templates(from, to) click to toggle source
# File lib/botup/file_processor.rb, line 32
def populate_basic_templates(from, to)
  Dir.foreach(from) do |file_name|
    current_path =  "#{from}/#{file_name}"

    next if FILE_NAMES_TO_SKIP.include?(file_name)

    erb = ERB.new(File.read(current_path))
    result = erb.result(namespace.instance_eval { binding })

    ruby_file_path = "#{to}/#{File.basename(file_name, '.erb')}.rb"

    File.open(ruby_file_path, 'w') << result
  end
end
populate_bot_named_files(source, output) click to toggle source
# File lib/botup/file_processor.rb, line 47
def populate_bot_named_files(source, output)
  erb = ERB.new(File.read(source))
  result = erb.result(namespace.instance_eval { binding })
  File.open(output.to_s, 'w') << result
end
prepare_files() click to toggle source
# File lib/botup/file_processor.rb, line 25
def prepare_files
  FileUtils.mkdir_p(output_main_folder)
  FileUtils.mkdir_p("#{output_folder}/bin/")
  FileUtils.cp("#{config_folder}/Gemfile", output_folder)
  FileUtils.cp("#{config_folder}/.env", output_folder)
end
templates_folder() click to toggle source
# File lib/botup/file_processor.rb, line 61
def templates_folder
  "#{__dir__}/templates"
end