class LtiTemplateBuilder::Builder

Attributes

after_bundle_commands[RW]
gem_dependencies[RW]
gem_dev_dependencies[RW]
recipes[RW]

Public Class Methods

new() click to toggle source
# File lib/lti_template_builder/builder.rb, line 5
def initialize
  @gem_dependencies = []
  @gem_dev_dependencies = []
  @after_bundle_commands = []
  @recipes = []
end

Public Instance Methods

add(name, args={}) click to toggle source
# File lib/lti_template_builder/builder.rb, line 22
def add(name, args={})
  klass_name = "LtiTemplateBuilder::#{name.to_s.classify}"
  recipe_klass = klass_name.constantize
  recipe = recipe_klass.new
  recipe.setup(args)
  recipe.gem_dependencies.each { |dep| @gem_dependencies << dep }
  recipe.gem_dev_dependencies.each { |dep| @gem_dev_dependencies << dep }
  recipe.after_bundle_commands.each { |cmd| @after_bundle_commands << cmd }
  @recipes << { name: name.to_sym, recipe: recipe.render }
end
add_gem_recipe() click to toggle source
# File lib/lti_template_builder/builder.rb, line 12
def add_gem_recipe
  recipe = LtiTemplateBuilder::Gems.new
  recipe.setup({
    gem_dependencies: @gem_dependencies.uniq,
    gem_dev_dependencies: @gem_dev_dependencies.uniq,
    after_bundle_commands: @after_bundle_commands.uniq
  })
  @recipes.unshift({ name: :gems, recipe: recipe.render })
end
render_to_screen() click to toggle source
# File lib/lti_template_builder/builder.rb, line 43
def render_to_screen
  puts self.to_script
end
save_to_file(path) click to toggle source
# File lib/lti_template_builder/builder.rb, line 47
def save_to_file(path)
  File.open(path, "w") { |file| file.write(self.to_script) }
end
to_script() click to toggle source
# File lib/lti_template_builder/builder.rb, line 33
def to_script
  add_gem_recipe
  ret = []
  @recipes.each do |item|
    ret << "\n# ---------------------------- Recipe: #{item[:name]} ---------------------------\n\n"
    ret << item[:recipe]
  end
  ret.join("\n\n")
end