module Middleman

def self.load_extensions_in_path

def self.load_extensions_in_path
  extensions = rubygems_latest_specs.select do |spec|
    spec_has_file?(spec, EXTENSION_FILE)
  end
  
  extensions.each do |spec|
    require spec.name
    # $stderr.puts "require: #{spec.name}"
  end
end

def self.rubygems_latest_specs

def self.rubygems_latest_specs
  # If newer Rubygems
  if Gem::Specification.respond_to? :latest_specs
    Gem::Specification.latest_specs
  else
    Gem.source_index.latest_specs
  end
end

def self.server(&block)

def self.server(&block)
  sandbox = Class.new(Sinatra::Base)
  sandbox.register Base
  sandbox.class_eval(&block) if block_given?
  sandbox
end

def self.spec_has_file?(spec, path)

def self.spec_has_file?(spec, path)
  full_path = File.join(spec.full_gem_path, path)
  File.exists?(full_path)
end

def self.start_server(options={})

def self.start_server(options={})
  opts = {
    :Port      => options[:port],
    :AccessLog => []
  }
  
  app = ::Middleman.server
  app.set :environment, options[:environment].to_sym
  opts[:app] = app.new
  opts[:server] = 'thin'
  $stderr.puts "== The Middleman is standing watch on port #{opts[:Port]}"
  ::Rack::Server.new(opts).start
end

def self.templates_path

def self.templates_path
  File.join(File.expand_path("~/"), ".middleman")
end