File: //usr/local/rvm/gems/ruby-2.5.9@global/gems/rvm-1.11.3.9/lib/rvm/environment/configuration.rb
module RVM
class Environment
# Define the config accessor, which basically uses config_value_for and
# the linke to set the env variable.
def self.define_config_accessor(*args)
singleton = (class << self; self; end)
args.each do |arg|
singleton.send(:define_method, arg) { RVM::Environment.config_value_for(arg) }
singleton.send(:define_method, :"#{arg}=") { |v| RVM::Environment.merge_config! arg => v }
end
end
define_config_accessor :rvm_path, :rvm_config_path, :rvm_bin_path
# Mixin for a set of configs.
module ConfigMixin
# Returns the current config for this scope
def config
@config ||= {}
end
# Merge a set of items into the config.
def merge_config!(r)
r.each_pair { |k, v| config[k.to_s] = v }
end
# Reset this local config to be empty.
def clear_config!
@config = {}
end
end
include ConfigMixin
extend ConfigMixin
# Gets the default option or the current
# environment variable for a given env var.
def self.config_value_for(value)
value = value.to_s
config[value] || ENV[value]
end
# Returns the value for a configuration option (mapping to an
# environment variable). If check_live is true (which it is
# by default), it will also check the environment for a value.
def config_value_for(key, default = nil, check_live = true)
key = key.to_s
value = check_live ? self[key.to_s] : nil
value || config[key] || self.class.config_value_for(key) || default
end
# Returns a hash of all of the user defined configuration.
def defined_config
self.class.config.merge(self.config)
end
end
end