Use Thor for mm-server
This commit is contained in:
parent
e81ba33b0d
commit
81a7557459
2 changed files with 51 additions and 45 deletions
|
@ -1,43 +1,45 @@
|
||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
require 'optparse'
|
require "thor"
|
||||||
|
require "thor/group"
|
||||||
|
|
||||||
# Require Middleman
|
# Require Middleman
|
||||||
require File.join(File.dirname(__FILE__), '..', 'lib', 'middleman')
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'middleman')
|
||||||
|
|
||||||
env = ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development'
|
module Middleman
|
||||||
options = {}
|
class GuardServer < ::Thor::Group
|
||||||
livereload_options = {}
|
include Thor::Actions
|
||||||
|
|
||||||
|
class_option :environment, :aliases => "-e", :default => ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development'
|
||||||
|
|
||||||
|
class_option :port, :aliases => "-p", :default => "4567"
|
||||||
|
class_option :"livereload-port", :default => "35729"
|
||||||
|
class_option :"livereload", :default => true, :type => :boolean
|
||||||
|
|
||||||
|
def start_guard
|
||||||
|
if !File.exists?("config.rb")
|
||||||
|
$stderr.puts "== Error: Could not find a Middleman project config, perhaps you are in the wrong folder?"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
# TODO: Switch to Thor
|
# If the old directories exists, use it, but issue warning
|
||||||
OptionParser.new { |opts|
|
if File.exists?("views") || File.exists?("public")
|
||||||
opts.banner = "Usage: mm-server [rack options]"
|
$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."
|
||||||
opts.separator ""
|
return
|
||||||
opts.separator "Rack options:"
|
end
|
||||||
opts.on("-p", "--port PORT", "use PORT (default: 4567)") { |port|
|
|
||||||
options[:port] = port
|
|
||||||
}
|
|
||||||
opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e|
|
|
||||||
env = e
|
|
||||||
}
|
|
||||||
opts.on("--livereload_port PORT", "use PORT (default: 35729)") { |port|
|
|
||||||
livereload_options[:port] = port
|
|
||||||
}
|
|
||||||
|
|
||||||
opts.parse! ARGV
|
ENV['RACK_ENV'] = options[:environment]
|
||||||
}
|
|
||||||
|
livereload_options = {
|
||||||
ENV['RACK_ENV'] = env
|
:port => options[:"livereload-port"]
|
||||||
|
}
|
||||||
if !File.exists?("config.rb")
|
livereload_options = nil unless options[:"livereload"]
|
||||||
$stderr.puts "== Error: Could not find a Middleman project config, perhaps you are in the wrong folder?"
|
|
||||||
exit
|
::Middleman::Guard.start({
|
||||||
|
:port => options[:port],
|
||||||
|
}, livereload_options)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# If the old directories exists, use it, but issue warning
|
Middleman::GuardServer.start
|
||||||
if File.exists?("views") || File.exists?("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."
|
|
||||||
exit
|
|
||||||
end
|
|
||||||
|
|
||||||
Middleman::Guard.start(options, livereload_options)
|
|
|
@ -8,23 +8,27 @@ module Middleman::Guard
|
||||||
options.each do |k,v|
|
options.each do |k,v|
|
||||||
options_hash << ", :#{k} => '#{v}'"
|
options_hash << ", :#{k} => '#{v}'"
|
||||||
end
|
end
|
||||||
|
|
||||||
livereload_options_hash = ""
|
|
||||||
livereload.each do |k,v|
|
|
||||||
livereload_options_hash << ", :#{k} => '#{v}'"
|
|
||||||
end
|
|
||||||
|
|
||||||
::Guard.start({
|
guardfile_contents = %Q{
|
||||||
:guardfile_contents => %Q{
|
guard 'middleman'#{options_hash} do
|
||||||
guard 'middleman'#{options_hash} do
|
watch("config.rb")
|
||||||
watch("config.rb")
|
end
|
||||||
end
|
}
|
||||||
|
|
||||||
|
if livereload
|
||||||
|
livereload_options_hash = ""
|
||||||
|
livereload.each do |k,v|
|
||||||
|
livereload_options_hash << ", :#{k} => '#{v}'"
|
||||||
|
end
|
||||||
|
|
||||||
|
guardfile_contents << %Q{
|
||||||
guard 'livereload'#{livereload_options_hash} do
|
guard 'livereload'#{livereload_options_hash} do
|
||||||
watch(%r{^source/(.*)$})
|
watch(%r{^source/(.*)$})
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
})
|
end
|
||||||
|
|
||||||
|
::Guard.start({ :guardfile_contents => guardfile_contents })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue