class GemsStatus::LockfileGems

Attributes

filename[R]

Public Class Methods

new(conf) click to toggle source
# File lib/gems-status/sources/lockfile_gems.rb, line 14
def initialize(conf)
  Utils::check_parameters('LockfileGems', conf, ["filename", "gems_url"])
  @filename = conf['filename']
  @gems_url = conf['gems_url']
end

Public Instance Methods

gem_list() click to toggle source
# File lib/gems-status/sources/lockfile_gems.rb, line 32
def gem_list
  gems = {}
  Utils::log_debug "reading #{@filename}"
  Dir.chdir(File.dirname(@filename)) do
    file_data = get_data(File::dirname(@filename), File::basename(@filename))
    if file_data.empty?
      Utils::log_error("?", "file empty #{@filename}")
      return
    end
    lockfile = Bundler::LockfileParser.new(file_data)
    lockfile.specs.each do |spec|
      version = Gem::Version.create(spec.version)
      Utils::log_debug "dependencies for #{spec.name} #{spec.dependencies}"
      gems[spec.name] = GemSimple.new(spec.name, version , nil, 
                                         @filename, gems_url(spec), 
                                         spec.dependencies)
    end
  end
  gems
end
get_data(dirname, filename) click to toggle source
# File lib/gems-status/sources/lockfile_gems.rb, line 20
def get_data(dirname, filename)
  data = ""
  Dir.chdir(dirname) do
    begin
      data = File.read(filename)
    rescue
      Utils::log_error("?", "There was a problem opening file #{filename} ")
    end
  end
  return data
end

Private Instance Methods

gems_url(spec) click to toggle source
# File lib/gems-status/sources/lockfile_gems.rb, line 55
def gems_url(spec)
  if spec.source.class.name == "Bundler::Source::Git"
    Utils::log_debug "this comes from git #{spec.name} #{spec.version}"
    spec.source.uri
  else
    @gems_url
  end
end