class Inspec::DependencyInstaller

def install_from_remote_gems(requested_gem_name, opts)

def install_from_remote_gems(requested_gem_name, opts)
  version = opts[:version].split(",")
  begin
    gem_dependency = Gem::Dependency.new(requested_gem_name, version || "> 0")
    # BestSet is rubygems.org API + indexing, APISet is for custom sources
    sources = if opts[:source]
                Gem::Resolver::APISet.new(URI.join(opts[:source] + "/api/v1/dependencies"))
              else
                Gem::Resolver::BestSet.new
              end
    install_gem_to_gems_dir(gem_dependency, [sources], opts[:update_mode])
  rescue Gem::RemoteFetcher::FetchError => gem_ex
    ex = Inspec::GemDependencyInstallError.new(gem_ex.message)
    ex.gem_name = requested_gem_name
    raise ex
  rescue Gem::Requirement::BadRequirementError => gem_ex
    ex = Inspec::GemDependencyInstallError.new(gem_ex.message)
    ex.gem_name = requested_gem_name
    raise "Unparseable gem dependency '#{version}' for '#{ex.gem_name}'"
  end
end