Responsible for add components within a Padrino project.
For each component, retrieve a valid choice and then execute the associated generator.
# File lib/padrino-gen/generators/component.rb, line 29 def setup_components self.destination_root = options[:root] if in_app_root? @_components = options.class.new options.select{ |key,_| self.class.component_types.include?(key.to_sym) } @app_name = (options[:app] || "App").gsub(/\W/, '_').camelize if @_components.values.delete_if(&:empty?).empty? self.class.start(["-h"]) say say "Current Selected Components:" list = [] self.class.component_types.each do |comp| list << [comp, fetch_component_choice(comp)] end print_table(list, :indent => 2) exit end self.class.component_types.each do |comp| next if @_components[comp].empty? choice = @_components[comp] = resolve_valid_choice(comp) existing = fetch_component_choice(comp) if existing != 'none' && existing != choice next unless yes?("Switch #{comp} to '#{choice}' from '#{existing}' ?[yes/no]:") end @project_name = fetch_component_choice(:namespace) if comp.to_s == 'test' && !already_exists?(@app_name, @project_name) say "#{@project_name}::#{@app_name} does not exist." say "Please, change app name." next end execute_component_setup(comp, choice) store_component_choice(comp, choice) if comp.to_s == 'orm' && choice.to_s != 'none' inject_into_file destination_root('Rakefile'), "PadrinoTasks.use(:database)\n", :before => "PadrinoTasks.init" inject_into_file destination_root('Rakefile'), "PadrinoTasks.use(#{choice.to_sym.inspect})\n", :before => "PadrinoTasks.init" end end else say 'You are not at the root of a Padrino application! (config/boot.rb not found)' end end
# File lib/padrino-gen/generators/component.rb, line 11 def self.source_root; File.expand_path(File.dirname(__FILE__)); end