NazaraEngine/xmake/actions/listdeps.lua

49 lines
1.2 KiB
Lua

task("list-deps")
set_menu({
-- Settings menu usage
usage = "xmake list-deps [target]",
description = "List dependencies used by the engine or a specific target",
options =
{
{'t', "target", "v", nil, "Target name" }
}
})
on_run(function ()
import("core.base.option")
import("core.project.project")
import("private.action.require.impl.package")
local requires, requires_extra = project.requires_str()
if not requires or #requires == 0 then
return
end
local usedpackages
local targetname = option.get("target")
if targetname then
local target = project.target(targetname)
usedpackages = target:pkgs()
else
usedpackages = project.required_packages()
end
local projectdeps = {}
for _, instance in ipairs(package.load_packages(requires, {requires_extra = requires_extra})) do
if usedpackages[instance:name()] then
table.insert(projectdeps, {
name = instance:name(),
desc = instance:description(),
homepage = instance:get("homepage")
})
end
end
table.sort(projectdeps, function (a, b) return a.name < b.name end)
for _, dep in pairs(projectdeps) do
print(string.format("- [%s](%s): %s", dep.name, dep.homepage, dep.desc))
end
end)