Module: PrivateGem

Defined in:
lib/private_gem.rb,
lib/private_gem/cli.rb,
lib/private_gem/tasks.rb,
lib/private_gem/version.rb

Defined Under Namespace

Modules: GemHelperPatches Classes: CLI

Constant Summary collapse

VERSION =
'1.1.4'

Class Method Summary collapse

Class Method Details

.credentialsObject



44
45
46
# File 'lib/private_gem.rb', line 44

def self.credentials
  Bundler.settings[server] || Bundler.settings[URI.parse(server).host]
end

.serverObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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