Sha256: dfaa62c81295d1f67a8367ca7e662c52a2d7099e6e2ef2d04c76c966bd169eb2

Contents?: true

Size: 1.71 KB

Versions: 107

Compression:

Stored size: 1.71 KB

Contents

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

Version data entries

107 entries across 107 versions & 2 rubygems

Version Path
rvm-1.11.3.9 lib/rvm/environment/configuration.rb
rvm-1.11.3.8 lib/rvm/environment/configuration.rb
rvm-1.11.3.7 lib/rvm/environment/configuration.rb
rvm-1.11.3.6 lib/rvm/environment/configuration.rb
rvm-1.11.3.5 lib/rvm/environment/configuration.rb
rvm-1.11.3.4 lib/rvm/environment/configuration.rb
rvm-1.11.3.3 lib/rvm/environment/configuration.rb
rvm-1.11.3.2 lib/rvm/environment/configuration.rb
rvm-1.11.3.1 lib/rvm/environment/configuration.rb
rvm-1.11.3 lib/rvm/environment/configuration.rb
rvm-1.9.2 lib/rvm/environment/configuration.rb
rvm-1.9.1 lib/rvm/environment/configuration.rb
rvm-1.9.0 lib/rvm/environment/configuration.rb
rvm-1.8.6 lib/rvm/environment/configuration.rb
rvm-1.8.5 lib/rvm/environment/configuration.rb
rvm-1.8.4 lib/rvm/environment/configuration.rb
rvm-1.8.3 lib/rvm/environment/configuration.rb
rvm-1.8.2 lib/rvm/environment/configuration.rb
rvm-1.8.1 lib/rvm/environment/configuration.rb
rvm-1.7.0 lib/rvm/environment/configuration.rb