class Middleman::Builder

def self.after_run(name, &block)

def self.after_run(name, &block)
  @@hooks[name] = block
end

def self.shared_rack

def self.shared_rack
  @shared_rack ||= begin
    mock = ::Rack::MockSession.new(SHARED_SERVER)
    sess = ::Rack::Test::Session.new(mock)
    response = sess.get("__middleman__")
    sess
  end
end

def build_all_files

def build_all_files
  self.class.shared_rack
  
  if options.has_key?("glob")
    action GlobAction.new(self, SHARED_SERVER.views, SHARED_SERVER.build_dir, { :force => true, :glob => options["glob"] })
  else      
    action DirectoryAction.new(self, SHARED_SERVER.views, SHARED_SERVER.build_dir, { :force => true })
  
    SHARED_SERVER.proxied_paths.each do |url, proxy|
      tilt_template(url.gsub(/^\//, "#{SHARED_SERVER.build_dir}/"), { :force => true })
    end
  end
end

def initialize(*args)

def initialize(*args)
  super
  
  if options.has_key?("relative") && options["relative"]
    SHARED_SERVER.activate :relative_assets
  end
end

def run_hooks

def run_hooks
  return if options.has_key?("glob")
  
  @@hooks.each do |name, proc|
    instance_eval(&proc)
  end
  
  SHARED_SERVER.after_build_callbacks.each do |proc|
    instance_eval(&proc)
  end
end

def source_paths

def source_paths
  @source_paths ||= [
    SHARED_SERVER.root
  ]
end