class Syntropy::Module

def route_by_host(map = nil)

def route_by_host(map = nil)
  root = @env[:location]
  sites = Dir[File.join(root, '*')]
          .reject { File.basename(it) =~ /^_/ }
          .select { File.directory?(it) }
          .each_with_object({}) { |fn, h|
    name = File.basename(fn)
    opts = @env.merge(location: fn)
    h[name] = Syntropy::App.new(opts[:machine], opts[:location], opts[:mount_path], opts)
  }
  map&.each do |k, v|
    sites[k] = sites[v]
  end
  lambda { |req|
    site = sites[req.host]
    site ? site.call(req) : req.respond(nil, ':status' => Status::BAD_REQUEST)
  }
end