--~ package.path = package.path .. '.\\lua\\?\\init.lua'
--Added the scripts for PenLight and LuaRocks under my project path
package.path = '.\\?\\init.lua;' .. '.\\LuaRocks\\lua\\?.lua;' ..package.path
require('pl')
--Steve!
utils.printf("%s\n","That feels better")
local d = data.read('lfw_modules.tab')
local lrs = require('luarocks.search')
local full_ver = sip.compile('$i{major}.$i{minor}.$i{patch}-$i{revision}')
local no_patch_ver = sip.compile('$i{major}.$i{minor}-$i{revision}')
local no_minor_ver = sip.compile('$i{major}-$i{revision}')
local function get_highest_ver(rock_name, search_res)
local highest = nil
if search_res.binaries then
local rock = search_res.binaries[rock_name:lower()]
if rock then
for i,v in pairs(rock) do
res = {}
local ok = full_ver(i,res)
if not ok then
ok = no_patch_ver(i,res)
if not ok then
ok = no_minor_ver(i,res)
if not ok then
print('wtf: ' .. i)
assert(nil, 'no matching pattern')
end
end
end
if not highest then
highest = res
else
print(pretty.write(res))
print(pretty.write(highest))
if res.major > highest.major then
highest = res
elseif res.major == highest.major then
if res.minor > highest.minor then
highest = res
elseif res.minor == highest.minor then
if res.patch > highest.patch then
highest = res
elseif res.patch == highest.patch then
if res.revision > highest.revision then
highest = res
elseif res.revision == highest.revision then
--MATCH
print('MATCH')
end
end
end
end
end
end
end
end
return highest
end
local function get_rock_result(name)
local res = lrs.return_search('',name,nil)
if res then
local v = get_highest_ver(name, res, sc)
--~ print(pretty.write(r))
if v then
print('And the winner is... \n' .. pretty.write(v))
else
print('no results... bummer')
end
else
print ('no results')
end
end
local q = d:select('NAME,VERSION')
for x,y in q do
print(x,y)
get_rock_result(x)
end
Comments