$:.unshift File.dirname(__FILE__) # For use/testing when no gem is installed

# core
require 'fileutils'
require 'time'

# stdlib
require 'timeout'
require 'logger'
require 'digest/sha1'

# third party

begin
  require 'mime/types'
  require 'rubygems'
rescue LoadError
  require 'rubygems'
  begin
    gem "mime-types", ">=0"
    require 'mime/types'
  rescue Gem::LoadError => e
    puts "WARNING: Gem LoadError: #{e.message}"
  end
end

# ruby 1.9 compatibility
require 'grit/ruby1.9'

# internal requires
require 'grit/lazy'
require 'grit/errors'
require 'grit/git-ruby'
require 'grit/git' unless defined? Grit::Git
require 'grit/ref'
require 'grit/tag'
require 'grit/commit'
require 'grit/commit_stats'
require 'grit/tree'
require 'grit/blob'
require 'grit/actor'
require 'grit/diff'
require 'grit/config'
require 'grit/repo'
require 'grit/index'
require 'grit/status'
require 'grit/submodule'
require 'grit/blame'
require 'grit/merge'
require 'grit/grep'

module Grit
  VERSION = File.read(File.expand_path("../../VERSION", __FILE__)).chomp.strip

  class << self
    # Set +debug+ to true to log all git calls and responses
    attr_accessor :debug
    attr_accessor :use_git_ruby
    attr_accessor :no_quote

    # The standard +logger+ for debugging git calls - this defaults to a plain STDOUT logger
    attr_accessor :logger
    def log(str)
      logger.debug { str }
    end
  end
  self.debug = false
  self.use_git_ruby = true
  self.no_quote = false

  @logger ||= ::Logger.new(STDOUT)

  def self.version
    VERSION
  end
end

# Include grit_ext
require 'charlock_holmes'
require 'grit_ext'
