Add extra_options from CLI

This commit is contained in:
Sdogruyol 2016-07-04 20:23:16 +03:00
commit 20a174b66e
3 changed files with 20 additions and 1 deletions

View File

@ -28,4 +28,19 @@ describe "Config" do
config.add_handler CustomTestHandler.new
config.handlers.size.should eq(5)
end
it "adds custom options" do
config = Kemal.config
ARGV.push("--test")
ARGV.push("FOOBAR")
test_option = nil
config.extra_options do |parser|
parser.on("--test TEST_OPTION", "Test an option") do |opt|
test_option = opt
end
end
Kemal::CLI.new
test_option.should eq("FOOBAR")
end
end

View File

@ -34,6 +34,7 @@ module Kemal
puts opts
exit 0
end
@config.extra_options.try &.call(opts)
end
end

View File

@ -7,7 +7,7 @@ module Kemal
@server : HTTP::Server?
property host_binding, ssl, port, env, public_folder, logging,
always_rescue, serve_static, server
always_rescue, serve_static, server, extra_options
def initialize
@host_binding = "0.0.0.0"
@ -68,6 +68,9 @@ module Kemal
HANDLERS.insert(0, @logger.not_nil!)
end
def extra_options(&@extra_options : OptionParser ->)
end
private def setup_error_handler
if @always_rescue
@error_handler ||= Kemal::CommonExceptionHandler.new