#!/usr/bin/env ruby

root = nil
%w[-m --merb-root].detect { |o| root = ARGV.index(o) }
__DIR__ = root ? ARGV[root+1] : Dir.getwd
framework = File.join(__DIR__,"framework")

# load merb from the framework folder
if File.directory?(framework)
  puts "Running from frozen framework"
  core = File.join(framework,"merb-core")
  if File.directory?(core)
    puts "using merb-core from #{core}"
    $:.unshift File.join(core,"lib")
  end
  more = File.join(framework,"merb-more")
  if File.directory?(more)
    Dir.new(more).select {|d| d =~ /merb-/}.each do |d|
      $:.unshift File.join(more,d,'lib')
    end
  end
  plugins = File.join(framework,"merb-plugins")
  if File.directory?(plugins)
    Dir.new(plugins).select {|d| d =~ /merb_/}.each do |d|
      $:.unshift File.join(plugins,d,'lib')
    end
  end
  require "merb-core/core_ext/kernel"
  require "merb-core/core_ext/rubygems"
else
  # load from the gems folder
  gem = Dir["./gems/gems/merb-core-*"].last
  if gem
    require gem + "/lib/merb-core/core_ext/kernel"
    require gem + "/lib/merb-core/core_ext/rubygems"
  
    Gem.clear_paths
    Gem.path.unshift(__DIR__+"/gems")
  else
    puts "Can't run frozen Merb from framework/ and/or gems/ please freeze Merb"
    puts "Merb will try to start using the system gems"
  end
end

# load submodule gems
gem_submodules_dir = File.join(__DIR__,"gems/submodules")
if File.directory?(gem_submodules_dir)
  Dir["#{gem_submodules_dir}/*"].each do |dir|
    $:.unshift File.join(dir,"lib")
  end
end

require 'merb-core'
unless %w[-a --adapter -i --irb-console -r --script-runner].any? { |o| ARGV.index(o) }
  ARGV.push *%w[-a mongrel]
end
  
Merb.frozen! if (File.directory?(framework) || gem)
Merb.start