Print better messages for detached server. Mute output on detach.
This commit is contained in:
parent
214c851be5
commit
c926596be7
|
@ -65,6 +65,7 @@ command :build do |c|
|
||||||
c.option '-w', '--watch', 'Watch for changes and rebuild'
|
c.option '-w', '--watch', 'Watch for changes and rebuild'
|
||||||
c.option '--lsi', 'Use LSI for improved related posts'
|
c.option '--lsi', 'Use LSI for improved related posts'
|
||||||
c.option '-D', '--drafts', 'Render posts in the _drafts folder'
|
c.option '-D', '--drafts', 'Render posts in the _drafts folder'
|
||||||
|
c.option '-v', '--verbose', 'Print verbose output.'
|
||||||
|
|
||||||
c.action do |args, options|
|
c.action do |args, options|
|
||||||
options = normalize_options(options.__hash__)
|
options = normalize_options(options.__hash__)
|
||||||
|
@ -84,6 +85,7 @@ command :serve do |c|
|
||||||
c.option '--lsi', 'Use LSI for improved related posts'
|
c.option '--lsi', 'Use LSI for improved related posts'
|
||||||
c.option '-B', '--detach', 'Run the server in the background (detach)'
|
c.option '-B', '--detach', 'Run the server in the background (detach)'
|
||||||
c.option '-D', '--drafts', 'Render posts in the _drafts folder'
|
c.option '-D', '--drafts', 'Render posts in the _drafts folder'
|
||||||
|
c.option '-v', '--verbose', 'Print verbose output.'
|
||||||
|
|
||||||
c.option '-P', '--port [PORT]', 'Port to listen on'
|
c.option '-P', '--port [PORT]', 'Port to listen on'
|
||||||
c.option '-H', '--host [HOST]', 'Host to bind to'
|
c.option '-H', '--host [HOST]', 'Host to bind to'
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- encoding: utf-8 -*-
|
||||||
module Jekyll
|
module Jekyll
|
||||||
module Commands
|
module Commands
|
||||||
class Serve < Command
|
class Serve < Command
|
||||||
|
@ -10,32 +10,57 @@ module Jekyll
|
||||||
|
|
||||||
FileUtils.mkdir_p(destination)
|
FileUtils.mkdir_p(destination)
|
||||||
|
|
||||||
mime_types_file = File.expand_path('../mime.types', File.dirname(__FILE__))
|
|
||||||
mime_types = WEBrick::HTTPUtils::load_mime_types(mime_types_file)
|
|
||||||
|
|
||||||
# recreate NondisclosureName under utf-8 circumstance
|
# recreate NondisclosureName under utf-8 circumstance
|
||||||
fh_option = WEBrick::Config::FileHandler
|
fh_option = WEBrick::Config::FileHandler
|
||||||
fh_option[:NondisclosureName] = ['.ht*','~*']
|
fh_option[:NondisclosureName] = ['.ht*','~*']
|
||||||
|
|
||||||
s = HTTPServer.new(
|
s = HTTPServer.new(webrick_options(options))
|
||||||
:Port => options['port'],
|
|
||||||
:BindAddress => options['host'],
|
|
||||||
:MimeTypes => mime_types,
|
|
||||||
:DoNotReverseLookup => true
|
|
||||||
)
|
|
||||||
|
|
||||||
s.mount(options['baseurl'], HTTPServlet::FileHandler, destination, fh_option)
|
s.mount(options['baseurl'], HTTPServlet::FileHandler, destination, fh_option)
|
||||||
|
|
||||||
if options['detach'] # detach the server
|
if options['detach'] # detach the server
|
||||||
pid = Process.fork { s.start }
|
pid = Process.fork { s.start }
|
||||||
Process.detach(pid)
|
Process.detach(pid)
|
||||||
pid
|
Jekyll.logger.info "Server detatched with pid '#{pid}'.", "Run `kill -9 #{pid}' to stop the server."
|
||||||
else # create a new server thread, then join it with current terminal
|
else # create a new server thread, then join it with current terminal
|
||||||
t = Thread.new { s.start }
|
t = Thread.new {
|
||||||
|
|
||||||
|
s.start
|
||||||
|
}
|
||||||
trap("INT") { s.shutdown }
|
trap("INT") { s.shutdown }
|
||||||
t.join()
|
t.join()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.webrick_options(config)
|
||||||
|
opts = {
|
||||||
|
:Port => config['port'],
|
||||||
|
:BindAddress => config['host'],
|
||||||
|
:MimeTypes => self.mime_types,
|
||||||
|
:DoNotReverseLookup => true,
|
||||||
|
:StartCallback => start_callback(config['detach'])
|
||||||
|
}
|
||||||
|
|
||||||
|
if !config['verbose']
|
||||||
|
opts.merge!({
|
||||||
|
:AccessLog => [],
|
||||||
|
:Logger => Log::new([], Log::WARN)
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
opts
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.start_callback(detached)
|
||||||
|
unless detached
|
||||||
|
Proc.new { Jekyll.logger.info "Server running...", "press ctrl-c to stop." }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.mime_types
|
||||||
|
mime_types_file = File.expand_path('../mime.types', File.dirname(__FILE__))
|
||||||
|
WEBrick::HTTPUtils::load_mime_types(mime_types_file)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue