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