In Files

  • bundler/mirror.rb
  • bundler/settings.rb
  • bundler/settings/validator.rb

Class/Module Index [+]

Quicksearch

Bundler::Settings

Public Class Methods

new(root = nil) click to toggle source
 
               # File bundler/settings.rb, line 84
def initialize(root = nil)
  @root            = root
  @local_config    = load_config(local_config_file)
  @global_config   = load_config(global_config_file)
  @temporary       = {}
end
            

Public Instance Methods

[](name) click to toggle source
 
               # File bundler/settings.rb, line 91
def [](name)
  key = key_for(name)
  value = @temporary.fetch(key) do
          @local_config.fetch(key) do
          ENV.fetch(key) do
          @global_config.fetch(key) do
          DEFAULT_CONFIG.fetch(name) do
            nil
          end end end end end

  converted_value(value, name)
end
            
all() click to toggle source
 
               # File bundler/settings.rb, line 153
def all
  env_keys = ENV.keys.grep(/\ABUNDLE_.+/)

  keys = @temporary.keys | @global_config.keys | @local_config.keys | env_keys

  keys.map do |key|
    key.sub(/^BUNDLE_/, "").gsub(/__/, ".").downcase
  end
end
            
allow_sudo?() click to toggle source
 
               # File bundler/settings.rb, line 283
def allow_sudo?
  key = key_for(:path)
  path_configured = @temporary.key?(key) || @local_config.key?(key)
  !path_configured
end
            
app_cache_path() click to toggle source
 
               # File bundler/settings.rb, line 293
def app_cache_path
  @app_cache_path ||= self[:cache_path] || "vendor/cache"
end
            
credentials_for(uri) click to toggle source
 
               # File bundler/settings.rb, line 176
def credentials_for(uri)
  self[uri.to_s] || self[uri.host]
end
            
gem_mirrors() click to toggle source
 
               # File bundler/settings.rb, line 180
def gem_mirrors
  all.inject(Mirrors.new) do |mirrors, k|
    mirrors.parse(k, self[k]) if k.start_with?("mirror.")
    mirrors
  end
end
            
ignore_config?() click to toggle source
 
               # File bundler/settings.rb, line 289
def ignore_config?
  ENV["BUNDLE_IGNORE_CONFIG"]
end
            
key_for(key) click to toggle source
 
               # File bundler/settings.rb, line 306
def key_for(key)
  key = Settings.normalize_uri(key).to_s if key.is_a?(String) && /https?:/ =~ key
  key = key.to_s.gsub(".", "__").upcase
  "BUNDLE_#{key}"
end
            
local_overrides() click to toggle source
 
               # File bundler/settings.rb, line 163
def local_overrides
  repos = {}
  all.each do |k|
    repos[$'] = self[k] if k =~ /^local\./
  end
  repos
end
            
locations(key) click to toggle source
 
               # File bundler/settings.rb, line 187
def locations(key)
  key = key_for(key)
  locations = {}
  locations[:temporary] = @temporary[key] if @temporary.key?(key)
  locations[:local]  = @local_config[key] if @local_config.key?(key)
  locations[:env]    = ENV[key] if ENV[key]
  locations[:global] = @global_config[key] if @global_config.key?(key)
  locations[:default] = DEFAULT_CONFIG[key] if DEFAULT_CONFIG.key?(key)
  locations
end
            
mirror_for(uri) click to toggle source
 
               # File bundler/settings.rb, line 171
def mirror_for(uri)
  uri = URI(uri.to_s) unless uri.is_a?(URI)
  gem_mirrors.for(uri.to_s).uri
end
            
path() click to toggle source

for legacy reasons, in Bundler 1, the ruby scope isnt appended when the setting comes from ENV or the global config, nor do we respect :disable_shared_gems

 
               # File bundler/settings.rb, line 225
def path
  key  = key_for(:path)
  path = ENV[key] || @global_config[key]
  if path && !@temporary.key?(key) && !@local_config.key?(key)
    return Path.new(path, Bundler.feature_flag.global_path_appends_ruby_scope?, false, false)
  end

  system_path = self["path.system"] || (self[:disable_shared_gems] == false)
  Path.new(self[:path], true, system_path, Bundler.feature_flag.default_install_uses_path?)
end
            
pretty_values_for(exposed_key) click to toggle source
 
               # File bundler/settings.rb, line 198
def pretty_values_for(exposed_key)
  key = key_for(exposed_key)

  locations = []

  if @temporary.key?(key)
    locations << "Set for the current command: #{converted_value(@temporary[key], exposed_key).inspect}"
  end

  if @local_config.key?(key)
    locations << "Set for your local app (#{local_config_file}): #{converted_value(@local_config[key], exposed_key).inspect}"
  end

  if value = ENV[key]
    locations << "Set via #{key}: #{converted_value(value, exposed_key).inspect}"
  end

  if @global_config.key?(key)
    locations << "Set for the current user (#{global_config_file}): #{converted_value(@global_config[key], exposed_key).inspect}"
  end

  return ["You have not configured a value for `#{exposed_key}`"] if locations.empty?
  locations
end
            
set_command_option(key, value) click to toggle source
 
               # File bundler/settings.rb, line 104
def set_command_option(key, value)
  if Bundler.feature_flag.forget_cli_options?
    temporary(key => value)
    value
  else
    command = if value.nil?
      "bundle config --delete #{key}"
    else
      "bundle config #{key} #{Array(value).join(":")}"
    end

    Bundler::SharedHelpers.major_deprecation 2,\
      "flags passed to commands " \
      "will no longer be automatically remembered. Instead please set flags " \
      "you want remembered between commands using `bundle config " \
      "<setting name> <setting value>`, i.e. `#{command}`"

    set_local(key, value)
  end
end
            
set_command_option_if_given(key, value) click to toggle source
 
               # File bundler/settings.rb, line 125
def set_command_option_if_given(key, value)
  return if value.nil?
  set_command_option(key, value)
end
            
set_global(key, value) click to toggle source
 
               # File bundler/settings.rb, line 149
def set_global(key, value)
  set_key(key, value, @global_config, global_config_file)
end
            
set_local(key, value) click to toggle source
 
               # File bundler/settings.rb, line 130
def set_local(key, value)
  local_config_file || raise(GemfileNotFound, "Could not locate Gemfile")

  set_key(key, value, @local_config, local_config_file)
end
            
temporary(update) click to toggle source
 
               # File bundler/settings.rb, line 136
def temporary(update)
  existing = Hash[update.map {|k, _| [k, @temporary[key_for(k)]] }]
  update.each do |k, v|
    set_key(k, v, @temporary, nil)
  end
  return unless block_given?
  begin
    yield
  ensure
    existing.each {|k, v| set_key(k, v, @temporary, nil) }
  end
end
            
validate!() click to toggle source
 
               # File bundler/settings.rb, line 297
def validate!
  all.each do |raw_key|
    [@local_config, ENV, @global_config].each do |settings|
      value = converted_value(settings[key_for(raw_key)], raw_key)
      Validator.validate!(raw_key, value, settings.to_hash.dup)
    end
  end
end