55 lines
1.8 KiB
Ruby
55 lines
1.8 KiB
Ruby
|
|
# @private
|
|
module Ceedling
|
|
module Version
|
|
{ "UNITY" => File.join("unity","src","unity.h"),
|
|
"CMOCK" => File.join("cmock","src","cmock.h"),
|
|
"CEXCEPTION" => File.join("c_exception","lib","CException.h")
|
|
}.each_pair do |name, path|
|
|
# Check for local or global version of vendor directory in order to look up versions
|
|
path1 = File.expand_path( File.join("..","..","vendor",path) )
|
|
path2 = File.expand_path( File.join(File.dirname(__FILE__),"..","..","vendor",path) )
|
|
filename = if (File.exists?(path1))
|
|
path1
|
|
elsif (File.exists?(path2))
|
|
path2
|
|
elsif File.exists?(CEEDLING_VENDOR)
|
|
path3 = File.expand_path( File.join(CEEDLING_VENDOR,path) )
|
|
if (File.exists?(path3))
|
|
path3
|
|
else
|
|
basepath = File.join( CEEDLING_VENDOR, path.split(/\\\//)[0], 'release')
|
|
begin
|
|
[ @ceedling[:file_wrapper].read( File.join(base_path, 'release', 'version.info') ).strip,
|
|
@ceedling[:file_wrapper].read( File.join(base_path, 'release', 'build.info') ).strip ].join('.')
|
|
rescue
|
|
"#{name}"
|
|
end
|
|
end
|
|
else
|
|
module_eval("#{name} = 'unknown'")
|
|
continue
|
|
end
|
|
|
|
# Actually look up the versions
|
|
a = [0,0,0]
|
|
begin
|
|
File.readlines(filename).each do |line|
|
|
["VERSION_MAJOR", "VERSION_MINOR", "VERSION_BUILD"].each_with_index do |field, i|
|
|
m = line.match(/#{name}_#{field}\s+(\d+)/)
|
|
a[i] = m[1] unless (m.nil?)
|
|
end
|
|
end
|
|
rescue
|
|
abort("Can't collect data for vendor component: \"#{filename}\" . \nPlease check your setup.")
|
|
end
|
|
|
|
# splat it to return the final value
|
|
eval("#{name} = '#{a.join(".")}'")
|
|
end
|
|
|
|
GEM = "0.31.1"
|
|
CEEDLING = GEM
|
|
end
|
|
end
|