Sha256: 1a209e899f4655c96331276fae3fe66756e7ee8723f20f2d33f8842bf037374b

Contents?: true

Size: 1.95 KB

Versions: 5

Compression:

Stored size: 1.95 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 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 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 add(var, value)
            self[var] = value
        end

        def expand_global(value)
            value.gsub!(/\$\((?'env_name'\w+)\)/) do |match|
                name = Regexp.last_match[:env_name].upcase
                ENV[name] || match
            end
            value
        end

        def expand(value)
            self.each do |name, val|
                value.gsub!("$(#{name})", val)
                value = expand_global(value)
            end
            value
        end

        def expand_vars
            self.each do |name, value|
                self[name] = expand(value)
            end
        end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rake-delphi-0.0.9 lib/rake/delphi/envvariables.rb
rake-delphi-0.0.8 lib/rake/delphi/envvariables.rb
rake-delphi-0.0.7 lib/rake/delphi/envvariables.rb
rake-delphi-0.0.6 lib/rake/delphi/envvariables.rb
rake-delphi-0.0.5 lib/rake/delphi/envvariables.rb