class Jars::Classpath

def self.classpath(scope = nil)

convenient method
def self.classpath(scope = nil)
  new.classpath(scope)
end

def self.classpath_string(scope = nil)

convenient method
def self.classpath_string(scope = nil)
  new.classpath_string(scope)
end

def self.require(scope = nil)

convenient method
def self.require(scope = nil)
  new.require(scope)
end

def classpath(scope = nil)

def classpath(scope = nil)
  classpath = []
  process(scope) do |jar|
    classpath << jar.file
  end
  classpath
end

def classpath_string(scope = nil)

def classpath_string(scope = nil)
  classpath(scope).join(File::PATH_SEPARATOR)
end

def dependencies_list

def dependencies_list
  if @deps.nil?
    deps = Jars.lock_path(mvn.basedir)
    @deps = deps if deps && File.exist?(deps)
  end
  @deps || resolve_dependencies
end

def initialize(spec = nil, deps = nil)

def initialize(spec = nil, deps = nil)
  @spec = spec
  @deps = deps
end

def mvn

def mvn
  @mvn ||= MavenExec.new(@spec)
end

def process(scope, &block)

def process(scope, &block)
  deps = dependencies_list
  Lock.new(deps).process(scope, &block)
ensure
  # just delete the temporary file if it exists
  FileUtils.rm_f(DEPENDENCY_LIST)
end

def require(scope = nil)

def require(scope = nil)
  process(scope) do |jar|
    if jar.scope == :system
      Kernel.require jar.path
    else
      require_jar(*jar.gacv)
    end
  end
  return unless scope.nil? || scope == :runtime
  process(:provided) do |jar|
    Jars.mark_as_required(*jar.gacv)
  end
end

def resolve_dependencies

def resolve_dependencies
  basedir = workdir('pkg') || workdir('target') || workdir('')
  deps = File.join(basedir, DEPENDENCY_LIST)
  mvn.resolve_dependencies_list(deps)
  deps
end

def workdir(dirname)

def workdir(dirname)
  dir = File.join(mvn.basedir, dirname)
  dir if File.directory?(dir)
end