middleman/middleman-core/lib/middleman-core/cli/server.rb

90 lines
2.6 KiB
Ruby
Raw Normal View History

2011-12-29 07:52:51 +01:00
# CLI Module
2011-12-21 21:13:28 +01:00
module Middleman::Cli
2011-12-29 07:52:51 +01:00
# Server thor task
2011-12-21 21:13:28 +01:00
class Server < Thor
check_unknown_options!
2011-12-21 21:13:28 +01:00
namespace :server
2011-12-21 21:13:28 +01:00
desc "server [options]", "Start the preview server"
method_option :environment,
:aliases => "-e",
:default => ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
:desc => "The environment Middleman will run under"
2011-12-21 21:13:28 +01:00
method_option :host,
2012-01-02 23:22:24 +01:00
:type => :string,
:aliases => "-h",
:default => "0.0.0.0",
2012-01-02 23:22:24 +01:00
:desc => "Bind to HOST address"
method_option :port,
:aliases => "-p",
:default => "4567",
:desc => "The port Middleman will listen on"
method_option :verbose,
:type => :boolean,
:default => false,
:desc => 'Print debug messages'
method_option :instrument,
:type => :string,
:default => false,
:desc => 'Print instrument messages'
method_option :disable_watcher,
:type => :boolean,
:default => false,
:desc => 'Disable the file change and delete watcher process'
method_option :profile,
:type => :boolean,
:default => false,
:desc => 'Generate profiling report for server startup'
2012-09-13 19:13:57 +02:00
method_option :reload_paths,
:type => :string,
:default => false,
:desc => 'Additional paths to auto-reload when files change'
method_option :force_polling,
:type => :boolean,
:default => false,
:desc => 'Force file watcher into polling mode'
2013-08-20 14:32:49 +02:00
method_option :latency,
:type => :numeric,
2013-08-20 14:32:49 +02:00
:aliases => "-l",
:default => 0.25,
2013-08-20 14:32:49 +02:00
:desc => 'Set file watcher latency, in seconds'
2011-12-29 07:52:51 +01:00
# Start the server
def server
require "middleman-core"
require "middleman-core/preview_server"
if !ENV["MM_ROOT"]
puts "== Could not find a Middleman project config.rb"
2011-12-29 00:29:19 +01:00
puts "== Treating directory as a static site to be served"
ENV["MM_ROOT"] = Dir.pwd
ENV["MM_SOURCE"] = ""
end
params = {
:port => options["port"],
:host => options["host"],
:environment => options["environment"],
:debug => options["verbose"],
:instrumenting => options["instrument"],
:disable_watcher => options["disable_watcher"],
:reload_paths => options["reload_paths"],
2013-08-20 23:59:38 +02:00
:force_polling => options["force_polling"],
2013-08-20 14:32:49 +02:00
:latency => options["latency"]
}
puts "== The Middleman is loading"
::Middleman::PreviewServer.start(params)
end
end
def self.exit_on_failure?
true
end
2011-12-29 07:52:51 +01:00
# Map "s" to "server"
Base.map({ "s" => "server" })
end