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

96 lines
3.2 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
2015-01-04 21:23:35 +01:00
class Server < Thor::Group
check_unknown_options!
2015-01-04 21:23:35 +01:00
class_option :environment,
aliases: '-e',
default: ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
desc: 'The environment Middleman will run under'
class_option :port,
aliases: '-p',
desc: 'The port Middleman will listen on'
2015-09-17 22:53:43 +02:00
class_option :server_name,
aliases: '-s',
desc: 'The server name Middleman will use'
class_option :bind_address,
aliases: '-b',
desc: 'The bind address Middleman will listen on'
class_option :https,
type: :boolean,
desc: 'Serve the preview server over SSL/TLS'
class_option :ssl_certificate,
desc: 'Path to an X.509 certificate to use for the preview server'
class_option :ssl_private_key,
desc: "Path to an RSA private key for the preview server's certificate"
2015-01-04 21:23:35 +01:00
class_option :verbose,
type: :boolean,
default: false,
desc: 'Print debug messages'
class_option :instrument,
type: :string,
default: false,
desc: 'Print instrument messages'
class_option :disable_watcher,
type: :boolean,
default: false,
desc: 'Disable the file change and delete watcher process'
class_option :profile,
type: :boolean,
default: false,
desc: 'Generate profiling report for server startup'
class_option :force_polling,
type: :boolean,
default: false,
desc: 'Force file watcher into polling mode'
class_option :latency,
type: :numeric,
aliases: '-l',
2015-04-26 20:32:47 +02:00
default: 0.5,
2015-01-04 21:23:35 +01:00
desc: 'Set file watcher latency, in seconds'
class_option :daemon,
type: :boolean,
aliases: '-d',
default: false,
desc: 'Daemonize preview server'
2011-12-29 07:52:51 +01:00
# Start the server
def server
require 'middleman-core'
require 'middleman-core/preview_server'
2014-04-29 19:50:21 +02:00
unless ENV['MM_ROOT']
puts '== Could not find a Middleman project config.rb'
exit
end
params = {
2014-04-29 19:50:21 +02:00
port: options['port'],
2015-09-17 22:53:43 +02:00
bind_address: options['bind_address'],
https: options['https'],
server_name: options['server_name'],
ssl_certificate: options['ssl_certificate'],
ssl_private_key: options['ssl_private_key'],
2014-04-29 19:50:21 +02:00
environment: options['environment'],
debug: options['verbose'],
instrumenting: options['instrument'],
disable_watcher: options['disable_watcher'],
reload_paths: options['reload_paths'],
force_polling: options['force_polling'],
latency: options['latency'],
daemon: options['daemon']
}
puts '== The Middleman is loading'
::Middleman::PreviewServer.start(params)
end
2015-01-04 21:23:35 +01:00
# Add to CLI
Base.register(self, 'server', 'server [options]', 'Start the preview server')
2015-01-04 21:23:35 +01:00
# Map "s" to "server"
Base.map('s' => 'server')
end
end