Skip to content

Commit

Permalink
traverse up directories to find root mm project. closes middleman#19
Browse files Browse the repository at this point in the history
  • Loading branch information
tdreyno committed Apr 10, 2011
1 parent 62abada commit f40c8a5
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 17 deletions.
32 changes: 30 additions & 2 deletions bin/mm-server
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,41 @@ OptionParser.new { |opts|

ENV['RACK_ENV'] = env

class Middleman::Server
set :root, Dir.pwd
@current_path = Dir.pwd
@path_parts = @current_path.split("/")
@found_root = false

while (!@found_root && (@path_parts.length > 0))
@current_path = File.join(*@path_parts)

public_folder = File.join(@current_path, "public")
views_folder = File.join(@current_path, "views")

if File.exists?(public_folder) && File.exists?(views_folder)
@found_root = true
next
end

@path_parts.pop
end

if !@found_root
$stderr.puts "== Error: Could not find a Middleman project structure, perhaps you are in the wrong folder?"
exit
end

# If the old init.rb exists, use it, but issue warning
old_config = File.join(@current_path, "init.rb")
if File.exists? old_config
$stderr.puts "== Error: The init.rb file (deprecated) needs to be be renamed to config.rb"
exit
end


# require 'shotgun'
# config = File.join(File.dirname(__FILE__), '..', 'lib', 'middleman', 'config.ru')
# app = Shotgun.new(config, &lambda { |inner_app| Middleman::Server })
Middleman::Server.root = @current_path
app = Middleman::Server.new

require 'rubygems'
Expand Down
27 changes: 12 additions & 15 deletions lib/middleman/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module Middleman
class Server < Sinatra::Base
# Basic Sinatra config
set :app_file, __FILE__
set :root, ENV["MM_DIR"] || Dir.pwd
#set :root, ENV["MM_DIR"] || Dir.pwd
set :reload, false
set :sessions, false
set :logging, false
Expand Down Expand Up @@ -117,13 +117,17 @@ def self.page(url, options={}, &block)
def process_request(options={})
# Normalize the path and add index if we're looking at a directory
path = request.path
path = File.join(path, settings.index_file) if path.split('/').last.split('.').length == 1
parts = path ? path.split('/') : []
if parts.last.nil? || parts.last.split('.').length == 1
path = File.join(path, settings.index_file)
end
path.gsub!(%r{^/}, '')

static_path = File.join(Middleman::Server.public, path)
if File.exists? static_path
send_file static_path
return
end
# if File.exists? static_path
# send_file static_path
# return
# end

old_layout = settings.current_layout
settings.layout(options[:layout]) if !options[:layout].nil?
Expand All @@ -150,16 +154,9 @@ def process_request(options={})

# The Rack App
class Middleman::Server
def self.new(*args, &block)
# If the old init.rb exists, use it, but issue warning
old_config = File.join(self.root, "init.rb")
if File.exists? old_config
$stderr.puts "== Warning: The init.rb file has been renamed to config.rb"
local_config = old_config
end

def self.new(*args, &block)
# Check for and evaluate local configuration
local_config ||= File.join(self.root, "config.rb")
local_config = File.join(self.root, "config.rb")
if File.exists? local_config
$stderr.puts "== Reading: Local config" if logging?
Middleman::Server.class_eval File.read(local_config)
Expand Down

0 comments on commit f40c8a5

Please sign in to comment.