#!/usr/bin/env ruby require_relative "lib/puke" require "optparse" opts = {} OptionParser.new { |o| o.on("-v", "--verbose") { opts[:verbose] = true } o.on("-d", "--datadir DATADIR") { |v| opts[:datadir] = v } o.on("-l", "--listen ADDRESS:PORT") { |v| opts[:listen] = v } o.on("-s", "--secret SECRET") { |v| opts[:secret] = v } }.parse!(ARGV) ARGV.empty? or raise "unknown argument(s): %p" % ARGV opts[:datadir] or raise "-d (--datadir) option is required" opts[:listen] or raise "-l (--listen) option is required" # Setup Puke and verify the options Puke.setup(**opts) server = Puke::Server.new # Set exiting handler handler = proc { server.shutdown Puke.close } trap("INT", handler) trap("TERM", handler) # Start the WEBrick server server.start