lib/rake/delphi/tool.rb in rake-delphi-0.0.31 vs lib/rake/delphi/tool.rb in rake-delphi-0.0.32

- old
+ new

@@ -17,17 +17,17 @@ BDSRegRoot = 'SOFTWARE\\Borland\\BDS' EDSRegRoot = 'SOFTWARE\\CodeGear\\BDS' EmbarcaderoRegRoot = 'SOFTWARE\\Embarcadero\\BDS' def self.reinit - @@version, @@delphidir, @@toolpath = nil, nil, nil + @@version, @@delphidir, @@toolpath, @@regroot = nil, nil, nil, nil end reinit def initialize(checkExistance = false) - @@version, @@delphidir, @@toolpath = self.class.find(checkExistance) unless @@version + @@version, @@delphidir, @@toolpath, @@regroot = self.class.find(checkExistance) unless @@version end def self.toolName raise 'Abstract method "toolName". Override it' end @@ -42,10 +42,14 @@ def delphidir @@delphidir end + def regroot + @@regroot + end + def options '' end def versionInfoClass @@ -112,22 +116,23 @@ [::Win32::Registry::HKEY_LOCAL_MACHINE, \ # for local/manual installations ::Win32::Registry::HKEY_CURRENT_USER].each do |regRoot| begin Logger.trace(Logger::DEBUG, "Finding Delphi dir for #{ver}") - regRoot.open(rootForVersion(ver)) do |reg| + reg_root = rootForVersion(ver) + regRoot.open(reg_root) do |reg| reg_typ, reg_val = reg.read('RootDir') - return reg_val.unix2dos_separator + return reg_val.unix2dos_separator, reg_root end rescue ::Win32::Registry::Error Logger.trace(Logger::DEBUG, "No reg key '#{regRoot}'?!") end end - return nil + return nil, nil rescue LoadError Logger.trace(Logger::DEBUG, 'No `win32/registry` gem?!') - return nil + return nil, nil end end def self.find(failIfNotFound = false) v = EnvVariables.delphi_version.to_s @@ -135,11 +140,11 @@ Logger.trace(Logger::DEBUG, 'DELPHI_DIR is set: ' + ENV['DELPHI_DIR']) # append trailing path delimiter ENV['DELPHI_DIR'] = ENV['DELPHI_DIR'].gsub(/[^\/]$/, '\&/') tool = ENV['DELPHI_DIR'] + toolName checkToolFailure(tool) if failIfNotFound - return v, ENV['DELPHI_DIR'], tool + return v, ENV['DELPHI_DIR'], tool, ENV['DELPHI_REG_ROOT'] end if v.to_s.empty? v = [] (4..21).each { |n| v << n.to_s } v.reverse! @@ -147,19 +152,20 @@ Logger.trace(Logger::DEBUG, 'DELPHI_VERSION is set: ' + v) v = [v] end tool_was_found = false v.each do |ver| - path = readDelphiDir(ver) + path, regroot = readDelphiDir(ver) next unless path tool = path + toolName tool_was_found = true Logger.trace(Logger::DEBUG, "Got tool: '#{tool}'") if File.exists?(tool) # found it ! ENV['DELPHI_VERSION'] = ver ENV['DELPHI_DIR'] = path - Logger.trace(Logger::DEBUG, "Set: DELPHI_VERSION=#{ver}; DELPHI_DIR='#{path}'") - return ver, path, tool + ENV['DELPHI_REG_ROOT'] = regroot + Logger.trace(Logger::DEBUG, "Set: DELPHI_VERSION=#{ver}; DELPHI_DIR='#{path}'; DELPHI_REG_ROOT='#{regroot}'") + return ver, path, tool, regroot else Logger.trace(Logger::DEBUG, 'But file does not exist!') end end checkToolFailure(tool_was_found) if failIfNotFound