49 lines
1.2 KiB
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) |