From 04d2aa2f9d81cb48875267437858bdf22eec759b Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Tue, 2 Nov 2010 20:46:16 -0200 Subject: display external dependencies in index.html page --- src/luarocks/index.lua | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/luarocks/index.lua b/src/luarocks/index.lua index 18afd797..570db431 100644 --- a/src/luarocks/index.lua +++ b/src/luarocks/index.lua @@ -64,6 +64,7 @@ local index_package_start = [[

$package - $summary

$detailed
+$externaldependencies latest sources $homepage | License: $license

@@ -83,6 +84,34 @@ local index_footer = [[ ]] +function format_external_dependencies(rockspec) + if rockspec.external_dependencies then + local deplist = {} + local listed_set = {} + local plats = nil + for name, desc in util.sortedpairs(rockspec.external_dependencies) do + if name ~= "platforms" then + table.insert(deplist, name:lower()) + listed_set[name] = true + else + plats = desc + end + end + if plats then + for plat, entries in util.sortedpairs(plats) do + for name, desc in util.sortedpairs(entries) do + if not listed_set[name] then + table.insert(deplist, name:lower() .. " (on "..plat..")") + end + end + end + end + return '

External dependencies: ' .. table.concat(deplist, ', ').. '

' + else + return "" + end +end + function make_index(repo) if not fs.is_dir(repo) then return nil, "Cannot access repository at "..repo @@ -96,9 +125,8 @@ function make_index(repo) local output = index_package_start for version, data in util.sortedpairs(version_list, deps.compare_versions) do local versions = {} - local versions_order = {} output = output..version..': ' - + table.sort(data, function(a,b) return a.arch < b.arch end) for _, item in ipairs(data) do local link = ''..item.arch..'' if item.arch == 'rockspec' then @@ -108,14 +136,9 @@ function make_index(repo) else link = link:gsub("$url", ("%s-%s.%s.rock"):format(package, version, item.arch)) end - versions[item.arch] = link - table.insert(versions_order, item.arch) - end - table.sort(versions_order) - for i, arch in ipairs(versions_order) do - versions_order[i] = versions[versions_order[i]] + table.insert(versions, link) end - output = output .. table.concat(versions_order, ', ') .. '
' + output = output .. table.concat(versions, ', ') .. '
' end output = output .. index_package_end if latest_rockspec then @@ -127,7 +150,8 @@ function make_index(repo) summary = rockspec.description.summary or "", detailed = rockspec.description.detailed or "", license = rockspec.description.license or "N/A", - homepage = rockspec.description.homepage and ("| project homepage") or "" + homepage = rockspec.description.homepage and ("| project homepage") or "", + externaldependencies = format_external_dependencies(rockspec) } vars.detailed = vars.detailed:gsub("\n\n", "

"):gsub("%s+", " ") output = output:gsub("$(%w+)", vars) -- cgit v1.2.3-55-g6feb