class Scaffoldish::Application

Attributes

project_root[R]
scaffolds[R]
templates_root[R]
workspace[R]

Public Class Methods

new() click to toggle source
# File lib/scaffoldish/application.rb, line 17
def initialize
  @workspace = Object.new
  @workspace.extend(DSL::Conf)

  @scaffolds = {}
  @project_root = Dir.pwd
  @templates_root = File.join(@project_root, 'templates')
end

Public Instance Methods

load_config() click to toggle source
# File lib/scaffoldish/application.rb, line 26
def load_config
  config_filename = 'Scaffoldable'
  config_path = Dir.pwd

  while config_path != '/' && !File.exist?(File.join(config_path, config_filename))
    config_path = File.expand_path("..", config_path)
  end

  config = File.read(File.join(config_path, config_filename))
  @project_root = config_path

  workspace.scaffolds = @scaffolds
  workspace.project_root = @project_root
  workspace.templates_root = @templates_root

  workspace.instance_eval(config)

  @scaffolds = workspace.scaffolds
  @project_root = workspace.project_root
  @templates_root = workspace.templates_root
end
run(*args) click to toggle source
# File lib/scaffoldish/application.rb, line 48
def run(*args)

  load_config

  scaffold_name = args.shift

  # Parameters checking
  raise OptionParser::MissingArgument.new("$1 => scaffold_name") if scaffold_name.nil?
  unless scaffolds.has_key?(scaffold_name.to_sym)
    raise OptionParser::InvalidArgument.new("$1 => scaffold_name should be one of the followings: #{scaffolds.keys}")
  end

  scaffold = scaffolds[scaffold_name.to_sym]

  puts "Run #{scaffold_name}:"

  scaffold.run(*args)
end