Sha256: ddae3d18d0bf272cdc99280b54d91e8f313a6d4a53f2ad0aac13f4c42176104a
Contents?: true
Size: 1.88 KB
Versions: 4
Compression:
Stored size: 1.88 KB
Contents
# encoding: utf-8 require 'rake/common/logger' module Rake module Delphi class EnvVariables < ::Hash def self.delphi_version ENV['DELPHI_VERSION'] end 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 def expand(value) value = expand_value(value, self) value = expand_value(value, ENV) end private 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| reg_type, value = reg.read(name) value.gsub!('\\', '/') add(name, value) end end rescue ::Win32::Registry::Error Logger.trace(Logger::DEBUG, "No reg key '%s'?!" % regpath) end rescue LoadError Logger.trace(Logger::DEBUG, 'No `win32/registry` gem?!') end end def add(var, value) self[var] = value end def expand_value(value, values) value.gsub(/\$\((?'env_name'\w+)\)/) do |match| name = Regexp.last_match[:env_name].upcase values[name] || match end end def expand_vars self.each do |name, value| self[name] = expand(value) end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems