#!/usr/bin/env ruby

$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])

help = <<HELP
Gollum is a multi-format Wiki Engine/API/Frontend.

Basic Command Line Usage:
  gollum [OPTIONS] [PATH]

        PATH                         The path to the Gollum repository.

Options:
HELP

require 'optparse'
require 'rubygems'

exec = {}
options = {}
opts = OptionParser.new do |opts|
  opts.banner = help

  opts.on("--port [PORT]", "Bind port (default 4567).") do |port|
    options['port'] = port.to_i
  end

  opts.on("--version", "Display current version.") do
    puts "Gollum " + Gollum::VERSION
    exit 0
  end

  opts.on("--irb", "Start an irb process with gollum loaded for the current wiki.") do
    options['irb'] = true
  end
end

# Read command line options into `options` hash
opts.parse!

$path = ARGV[0] || Dir.pwd

if options['irb']
  require 'irb'
  # http://jameskilton.com/2009/04/02/embedding-irb-into-your-ruby-application/
  module IRB # :nodoc:
    def self.start_session(binding)
      unless @__initialized
        args = ARGV
        ARGV.replace(ARGV.dup)
        IRB.setup(nil)
        ARGV.replace(args)
        @__initialized = true
      end
 
      workspace = WorkSpace.new(binding)
 
      irb = Irb.new(workspace)
 
      @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
      @CONF[:MAIN_CONTEXT] = irb.context
 
      catch(:IRB_EXIT) do
        irb.eval_input
      end
    end
  end

  require 'gollum'
  wiki = Gollum::Wiki.new $path
  IRB.start_session binding
else
  require 'gollum/frontend/app'
  Precious::App.run!(options)
end
