#!/usr/bin/env ruby
# The compass command line utility

#
#  Additions by Bryan Jones to make Compass work from the CodeKit app bundle:
#
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../../scss/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../../scss/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../chunky_png/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../chunky_png/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../oily_png/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../oily_png/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../listen/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../listen/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../compass-core/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../compass-core/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../compass-import-once/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../compass-import-once/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../json/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../json/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../ffi/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../ffi/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../multi_json/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../multi_json/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../rb-fsevent/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../rb-fsevent/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../rb-inotify/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../rb-inotify/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../rb-kqueue/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../rb-kqueue/lib')
#  Next two lines make the CSS part of the -Stats command work
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../cssparser/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../cssparser/lib')
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../addressable/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../addressable/lib')
#  Next line makes Susy work
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../susy/lib') unless $LOAD_PATH.include?(File.dirname(__FILE__) + '/../../susy/lib')


# This allows compass to run easily from a git checkout without install.
def fallback_load_path(path)
  retried = false
  begin
    yield
  rescue LoadError
    unless retried
      $: << path
      retried = true
      retry
    end
    raise
  end
end

fallback_load_path(File.join(File.dirname(__FILE__), '..', 'lib')) do
  require 'compass'
  require 'compass/exec'
end

if defined?(Bundler)
  require 'bundler/shared_helpers'
  Bundler.require :assets if Bundler::SharedHelpers.in_bundle?
end

runner = Proc.new do
  Compass::Exec::SubCommandUI.new(ARGV).run!
end

if ARGV.delete("--profile")
  require 'ruby-prof'
  RubyProf.start
  exit_code = runner.call
  result = RubyProf.stop

  # Print a flat profile to text
  printer = RubyProf::FlatPrinter.new(result)
  printer.print(STDERR, 0)
  exit exit_code
else
  exit runner.call || 1
end
