class Brakeman::Codeclimate::EngineConfiguration

def active_include_paths

def active_include_paths
  @active_include_paths ||=
    if brakeman_configuration["app_path"]
      stripped_include_paths(brakeman_configuration["app_path"])
    else
      engine_config["include_paths"] && engine_config["include_paths"].compact
    end
end

def brakeman_configuration

def brakeman_configuration
  if engine_config["config"]
    engine_config["config"]
  else
    {}
  end
end

def configured_options

def configured_options
  @configured_options = {}
  # ATM this gets parsed as a string instead of bool: "config":{ "debug":"true" }
  if brakeman_configuration["debug"] && brakeman_configuration["debug"].to_s.downcase == "true"
    @configured_options[:debug] = true
    @configured_options[:report_progress] = false
  end
  if active_include_paths
    @configured_options[:only_files] = active_include_paths
  end
  if brakeman_configuration["app_path"]
    @configured_options[:path_prefix] = brakeman_configuration["app_path"]
    path = Pathname.new(Dir.pwd) + brakeman_configuration["app_path"]
    @configured_options[:app_path] = path.to_s
  end
  @configured_options
end

def default_options

def default_options
  @default_options = {
    :output_format => :codeclimate,
    :quiet => true,
    :pager => false,
    :app_path => Dir.pwd
  }
  if system("test -w /dev/stdout")
    @default_options[:output_files] = ["/dev/stdout"]
  end
  @default_options
end

def initialize(engine_config = {})

def initialize(engine_config = {})
  @engine_config = engine_config
end

def options

def options
  default_options.merge(configured_options)
end

def path_subprefixes(path)

def path_subprefixes(path)
  Pathname.new(path).each_filename.inject([]) do |memo, piece|
   memo <<
     if memo.any?
       File.join(memo.last, piece)
     else
       File.join(piece)
     end
  end
end

def stripped_include_path(prefix, subprefixes, path)

def stripped_include_path(prefix, subprefixes, path)
  if path.start_with?(prefix)
    path.sub(%r{^#{prefix}/?}, "/")
  elsif subprefixes.any? { |subprefix| path =~ %r{^#{subprefix}/?$} }
    "/"
  end
end

def stripped_include_paths(prefix)

def stripped_include_paths(prefix)
  subprefixes = path_subprefixes(prefix)
  engine_config["include_paths"] && engine_config["include_paths"].map do |path|
    next unless path
    stripped_include_path(prefix, subprefixes, path)
  end.compact
end