aboutsummaryrefslogtreecommitdiffstats
path: root/puke
diff options
context:
space:
mode:
Diffstat (limited to 'puke')
-rwxr-xr-xpuke30
1 files changed, 30 insertions, 0 deletions
diff --git a/puke b/puke
new file mode 100755
index 0000000..959774f
--- /dev/null
+++ b/puke
@@ -0,0 +1,30 @@
+#!/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