class Bundler::Settings
Constants
- ARRAY_KEYS
 - BOOL_KEYS
 - CONFIG_REGEX
 - DEFAULT_CONFIG
 - NORMALIZE_URI_OPTIONS_PATTERN
 - NUMBER_KEYS
 - PER_URI_OPTIONS
 - Path
 
Public Class Methods
          new(root = nil)
          
          click to toggle source
          
        
        
        # File lib/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
Private Class Methods
          normalize_uri(uri)
          
          click to toggle source
          
        
        
        TODO: duplicates Rubygems#normalize_uri TODO: is this the correct place to validate mirror URIs?
# File lib/bundler/settings.rb, line 448 def self.normalize_uri(uri) uri = uri.to_s if uri =~ NORMALIZE_URI_OPTIONS_PATTERN prefix = $1 uri = $2 suffix = $3 end uri = "#{uri}/" unless uri.end_with?("/") uri = URI(uri) unless uri.absolute? raise ArgumentError, format("Gem sources must be absolute. You provided '%s'.", uri) end "#{prefix}#{uri}#{suffix}" end
Public Instance Methods
          [](name)
          
          click to toggle source
          
        
        
        # File lib/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 lib/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 lib/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 lib/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 lib/bundler/settings.rb, line 176 def credentials_for(uri) self[uri.to_s] || self[uri.host] end
          gem_mirrors()
          
          click to toggle source
          
        
        
        # File lib/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 lib/bundler/settings.rb, line 289 def ignore_config? ENV["BUNDLE_IGNORE_CONFIG"] end
          key_for(key)
          
          click to toggle source
          
        
        
        # File lib/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 lib/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 lib/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 lib/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 lib/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 lib/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 lib/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 lib/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 lib/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 lib/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 lib/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 lib/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
Private Instance Methods
          array_to_s(array)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 352 def array_to_s(array) array = Array(array) return nil if array.empty? array.join(":").tr(" ", ":") end
          converted_value(value, key)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 379 def converted_value(value, key) if is_array(key) to_array(value) elsif value.nil? nil elsif is_bool(key) || value == "false" to_bool(value) elsif is_num(key) value.to_i else value.to_s end end
          global_config_file()
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 393 def global_config_file if ENV["BUNDLE_CONFIG"] && !ENV["BUNDLE_CONFIG"].empty? Pathname.new(ENV["BUNDLE_CONFIG"]) else begin Bundler.user_bundle_path("config") rescue PermissionError, GenericSystemCallError nil end end end
          is_array(key)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 343 def is_array(key) ARRAY_KEYS.include?(key.to_s) end
          is_bool(name)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 326 def is_bool(name) BOOL_KEYS.include?(name.to_s) || BOOL_KEYS.include?(parent_setting_for(name.to_s)) end
          is_num(key)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 339 def is_num(key) NUMBER_KEYS.include?(key.to_s) end
          load_config(config_file)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 423 def load_config(config_file) return {} if !config_file || ignore_config? SharedHelpers.filesystem_access(config_file, :read) do |file| valid_file = file.exist? && !file.size.zero? return {} unless valid_file require "bundler/yaml_serializer" YAMLSerializer.load file.read end end
          local_config_file()
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 405 def local_config_file Pathname.new(@root).join("config") if @root end
          parent_setting_for(name)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 314 def parent_setting_for(name) split_specific_setting_for(name)[0] end
          set_key(raw_key, value, hash, file)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 358 def set_key(raw_key, value, hash, file) raw_key = raw_key.to_s value = array_to_s(value) if is_array(raw_key) key = key_for(raw_key) return if hash[key] == value hash[key] = value hash.delete(key) if value.nil? Validator.validate!(raw_key, converted_value(value, raw_key), hash) return unless file SharedHelpers.filesystem_access(file) do |p| FileUtils.mkdir_p(p.dirname) require "bundler/yaml_serializer" p.open("w") {|f| f.write(YAMLSerializer.dump(hash)) } end end
          specific_gem_for(name)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 318 def specific_gem_for(name) split_specific_setting_for(name)[1] end
          split_specific_setting_for(name)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 322 def split_specific_setting_for(name) name.split(".") end
          to_array(value)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 347 def to_array(value) return [] unless value value.split(":").map(&:to_sym) end
          to_bool(value)
          
          click to toggle source
          
        
        
        # File lib/bundler/settings.rb, line 330 def to_bool(value) case value when nil, /\A(false|f|no|n|0|)\z/i, false false else true end end