module PrivateGem

Constants

VERSION

Public Class Methods

credentials() click to toggle source
# File lib/private_gem.rb, line 44
def self.credentials
  Bundler.settings[server] || Bundler.settings[URI.parse(server).host]
end
server() click to toggle source
# File lib/private_gem.rb, line 6
def self.server
  urls_with_credentials = Bundler.settings.all.select do |n|
    url = URI.parse(n)
    url && ['http', 'https'].include?(url.scheme)
  end

  hosts_with_credentials = Bundler.settings.all.select do |n|
    n =~ /^([-_a-z\d]+\.)+[a-z]+$/
  end

  if private_gem_server = Bundler.settings['private_gem_server']
    if urls_with_credentials.include?(private_gem_server)
      return private_gem_server
    end

    private_gem_server_uri = URI.parse(private_gem_server)
    if private_gem_server_uri && hosts_with_credentials.include?(private_gem_server_uri.host)
      return private_gem_server
    end

    abort("You don't have any configured credentials for the private gem server at #{private_gem_server}")
  end

  if urls_with_credentials.empty?
    abort("You don't have any configured private gem credentials.")
  end

  if urls_with_credentials.size > 1
    msg = "You have multiple private gem servers defined:\n"
    urls_with_credentials.each do |s|
      msg << "  #{s}\n"
    end
    abort("#{msg}You need to select which private gem server to use using `bundle config private_gem_server URL_OF_GEM_SERVER`")
  end

  urls_with_credentials.first
end