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