class Rake::Delphi::EnvVariables

Public Class Methods

delphi_version() click to toggle source
# File lib/rake/delphi/envvariables.rb, line 7
def self.delphi_version
    ENV['DELPHI_VERSION'].to_i
end
new(regpath, delphidir) click to toggle source
# File lib/rake/delphi/envvariables.rb, line 11
def initialize(regpath, delphidir)
    readreg(regpath)
    _dir = delphidir.gsub(/\/$/, '')
    add('DELPHI', _dir)
    add('BDS', _dir)
    add('BDSLIB', _dir + '/Lib')
    expand_vars
    Logger.trace(Logger::TRACE, self)
end

Public Instance Methods

expand(value) click to toggle source
# File lib/rake/delphi/envvariables.rb, line 21
def expand(value)
    value = expand_value(value, self)
    value = expand_value(value, ENV)
end

Private Instance Methods

add(var, value) click to toggle source
# File lib/rake/delphi/envvariables.rb, line 50
def add(var, value)
    self[var] = value
end
expand_value(value, values) click to toggle source
# File lib/rake/delphi/envvariables.rb, line 54
def expand_value(value, values)
    value.gsub(/\$\((?'env_name'\w+)\)/) do |match|
        name = Regexp.last_match[:env_name].upcase
        values[name] || match
    end
end
expand_vars() click to toggle source
# File lib/rake/delphi/envvariables.rb, line 61
def expand_vars
    self.each do |name, value|
        self[name] = expand(value)
    end
end
readreg(regpath) click to toggle source
# File lib/rake/delphi/envvariables.rb, line 27
def readreg(regpath)
    return unless regpath
    begin
        require 'win32/registry'
        Logger.trace(Logger::DEBUG, "Reading environment variables from '#{regpath}'")
        begin
            ::Win32::Registry::HKEY_CURRENT_USER.open(regpath) do |reg|
                reg.each do |name|
                    Logger.trace(Logger::DEBUG, "Reading: #{name}")
                    reg_type, value = reg.read(name)
                    Logger.trace(Logger::TRACE, "Value: #{value}")
                    value.gsub!('\\', '/')
                    add(name, value)
                end
            end
        rescue ::Win32::Registry::Error => e
            Logger.trace(Logger::DEBUG, "No reg key '%s'?! %s" % [regpath, e.message])
        end
    rescue LoadError
        Logger.trace(Logger::DEBUG, 'No `win32/registry` gem?!')
    end
end