Implement Guard on config.rb
This commit is contained in:
parent
6c2a6f3082
commit
9659268a03
|
@ -5,10 +5,8 @@ require 'optparse'
|
||||||
# Require Middleman
|
# Require Middleman
|
||||||
require File.join(File.dirname(__FILE__), '..', 'lib', 'middleman')
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'middleman')
|
||||||
|
|
||||||
sandboxed_server = Middleman.server
|
|
||||||
|
|
||||||
env = ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development'
|
env = ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development'
|
||||||
options = { :Port => 4567, :AccessLog => [] }
|
options = {}
|
||||||
|
|
||||||
# TODO: Switch to Thor
|
# TODO: Switch to Thor
|
||||||
OptionParser.new { |opts|
|
OptionParser.new { |opts|
|
||||||
|
@ -16,60 +14,26 @@ OptionParser.new { |opts|
|
||||||
opts.separator ""
|
opts.separator ""
|
||||||
opts.separator "Rack options:"
|
opts.separator "Rack options:"
|
||||||
opts.on("-p", "--port PORT", "use PORT (default: 4567)") { |port|
|
opts.on("-p", "--port PORT", "use PORT (default: 4567)") { |port|
|
||||||
options[:Port] = port
|
options[:port] = port
|
||||||
}
|
}
|
||||||
opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e|
|
opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e|
|
||||||
env = e
|
env = e
|
||||||
}
|
}
|
||||||
opts.on("--debug", "Debug mode") {
|
|
||||||
sandboxed_server.set :logging, true
|
|
||||||
}
|
|
||||||
|
|
||||||
opts.parse! ARGV
|
opts.parse! ARGV
|
||||||
}
|
}
|
||||||
|
|
||||||
ENV['RACK_ENV'] = env
|
ENV['RACK_ENV'] = env
|
||||||
|
|
||||||
@current_path = Dir.pwd
|
if !File.exists?("config.rb")
|
||||||
@path_parts = @current_path.split("/")
|
$stderr.puts "== Error: Could not find a Middleman project config, perhaps you are in the wrong folder?"
|
||||||
@found_root = false
|
|
||||||
|
|
||||||
while (!@found_root && (@path_parts.length > 0))
|
|
||||||
@current_path = File.join(*@path_parts)
|
|
||||||
|
|
||||||
source_folder = File.join(@current_path, "source")
|
|
||||||
|
|
||||||
if File.exists?(source_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, 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
|
exit
|
||||||
end
|
end
|
||||||
|
|
||||||
# If the old directories exists, use it, but issue warning
|
# If the old directories exists, use it, but issue warning
|
||||||
old_views = File.join(@current_path, "views")
|
if File.exists?("views") || File.exists?("public")
|
||||||
old_public = File.join(@current_path, "public")
|
|
||||||
if File.exists?(old_views) || File.exists?(old_public)
|
|
||||||
$stderr.puts "== Error: The views and public folders are have been combined. Create a new 'source' folder, add the contents of views and public to it and then remove the empty views and public folders."
|
$stderr.puts "== Error: The views and public folders are have been combined. Create a new 'source' folder, add the contents of views and public to it and then remove the empty views and public folders."
|
||||||
exit
|
exit
|
||||||
end
|
end
|
||||||
|
|
||||||
sandboxed_server.set :root, @current_path
|
Middleman::Guard.start(options)
|
||||||
options[:app] = sandboxed_server.new
|
|
||||||
# options[:server] = 'webrick'
|
|
||||||
|
|
||||||
puts "== The Middleman is standing watch on port #{options[:Port]}"
|
|
||||||
Rack::Server.new(options).start
|
|
|
@ -66,6 +66,7 @@ module Middleman
|
||||||
# Auto-load modules on-demand
|
# Auto-load modules on-demand
|
||||||
autoload :Base, "middleman/base"
|
autoload :Base, "middleman/base"
|
||||||
autoload :Builder, "middleman/builder"
|
autoload :Builder, "middleman/builder"
|
||||||
|
autoload :Guard, "middleman/guard"
|
||||||
|
|
||||||
# Custom Renderers
|
# Custom Renderers
|
||||||
module Renderers
|
module Renderers
|
||||||
|
|
57
lib/middleman/guard.rb
Normal file
57
lib/middleman/guard.rb
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
require "guard"
|
||||||
|
require "guard/guard"
|
||||||
|
|
||||||
|
module Middleman::Guard
|
||||||
|
def self.start(options={})
|
||||||
|
options_hash = ""
|
||||||
|
options.each do |k,v|
|
||||||
|
options_hash << ", :#{k} => '#{v}'"
|
||||||
|
end
|
||||||
|
|
||||||
|
::Guard.start({
|
||||||
|
:guardfile_contents => %Q{
|
||||||
|
guard 'MiddlemanServer'#{options_hash} do
|
||||||
|
watch("config.rb")
|
||||||
|
end
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module Guard
|
||||||
|
class MiddlemanServer < Guard
|
||||||
|
def initialize(watchers = [], options = {})
|
||||||
|
super
|
||||||
|
@options = {
|
||||||
|
:port => '4567'
|
||||||
|
}.update(options)
|
||||||
|
end
|
||||||
|
|
||||||
|
def start
|
||||||
|
server_start
|
||||||
|
end
|
||||||
|
|
||||||
|
def run_on_change(paths)
|
||||||
|
server_stop
|
||||||
|
server_start
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def server_start
|
||||||
|
puts "== The Middleman is standing watch on port #{@options[:port]}"
|
||||||
|
@server_options = { :Port => @options[:port], :AccessLog => [] }
|
||||||
|
@server_job = fork do
|
||||||
|
@server_options[:app] = Middleman.server.new
|
||||||
|
::Rack::Server.new(@server_options).start
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def server_stop
|
||||||
|
puts "== The Middleman is shutting down"
|
||||||
|
Process.kill("KILL", @server_job)
|
||||||
|
Process.wait @server_job
|
||||||
|
@server_job = nil
|
||||||
|
@server_options[:app] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -34,6 +34,8 @@ Gem::Specification.new do |s|
|
||||||
s.add_runtime_dependency("compass", ["~> 0.11.3"])
|
s.add_runtime_dependency("compass", ["~> 0.11.3"])
|
||||||
s.add_runtime_dependency("sprockets", ["2.0.0.beta.10"])
|
s.add_runtime_dependency("sprockets", ["2.0.0.beta.10"])
|
||||||
s.add_runtime_dependency("httparty", ["~> 0.7.0"])
|
s.add_runtime_dependency("httparty", ["~> 0.7.0"])
|
||||||
|
s.add_runtime_dependency("guard", [">= 0"])
|
||||||
|
s.add_runtime_dependency("guard-livereload", [">= 0"])
|
||||||
s.add_development_dependency("coffee-filter", ["~> 0.1.1"])
|
s.add_development_dependency("coffee-filter", ["~> 0.1.1"])
|
||||||
s.add_development_dependency("cucumber", ["~> 0.10.0"])
|
s.add_development_dependency("cucumber", ["~> 0.10.0"])
|
||||||
s.add_development_dependency("rake", ["0.8.7"])
|
s.add_development_dependency("rake", ["0.8.7"])
|
||||||
|
|
Loading…
Reference in a new issue