3
#$: << File.expand_path(File.join(File.basename(__FILE__), '../lib'))
5
require 'ferret/browser'
10
SERVER_OPTIONS = ['webrick']
11
conf = OpenStruct.new(:host => '0.0.0.0', :port => 3301)
13
opts = OptionParser.new do |opts|
14
opts.banner = "Usage: #{File.basename($0)} /path/to/index"
16
opts.separator "Specific Options:"
18
opts.on("-h", "--host HOSTNAME",
19
"Host for web server to bind to (default is all IPs)") { |conf.host| }
20
opts.on("-p", "--port NUM",
21
"Port for web server (defaults to #{conf.port})") { |conf.port| }
22
opts.on("-s", "--server NAME",
23
"Server to force (#{SERVER_OPTIONS.join(', ')}).") { |s| conf.server = s.to_sym }
26
opts.separator "Common options:"
28
opts.on_tail("-?", "--help", "Show this message") do
33
opts.on_tail("-v", "--version", "Show version") do
46
# Load the Ferret index
48
@reader = Ferret::Index::IndexReader.new(@path)
49
rescue Ferret::FileNotFoundError => e
50
puts "\033[31mCannot start Ferret. No index exists at \"\033[m" +
51
"\033[33m#{@path}\033[m\033[31m\".\033[m"
54
puts "\033[31mCannot start Ferret.\n\033[m\033[33m#{e.to_s}\031[m"
59
conf.server = :webrick
64
require 'webrick/httpserver'
65
require 'ferret/browser/webrick'
68
s = WEBrick::HTTPServer.new(:BindAddress => conf.host, :Port => conf.port)
69
s.mount "/s", WEBrick::HTTPServlet::FileHandler, Ferret::Browser::Controller::STATIC_DIR, true
70
s.mount "/", WEBrick::FerretBrowserHandler, @reader, @path
78
raise "server #{conf.server} not known. Must be one of [#{SERVER_OPTIONS.join(', ')}]"