summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-12-17 00:38:14 +0800
committerruki <[email protected]>2024-12-17 00:38:14 +0800
commitf28059827a165f1f9f31bf84968bb39e3d0ebb7b (patch)
tree8f5b73e401043bc4071c2e1e50df0df66a6bb131
parent4fe52e2dff1b781fa73c3a4119bc750b8b242db3 (diff)
get nuget package info
-rw-r--r--xmake/modules/package/manager/nuget/find_package.lua43
1 files changed, 42 insertions, 1 deletions
diff --git a/xmake/modules/package/manager/nuget/find_package.lua b/xmake/modules/package/manager/nuget/find_package.lua
index 1dfd5a64d..7ab369733 100644
--- a/xmake/modules/package/manager/nuget/find_package.lua
+++ b/xmake/modules/package/manager/nuget/find_package.lua
@@ -26,6 +26,22 @@ import("core.base.json")
import("core.project.config")
import("core.project.target")
+function _find_package(name, targets, libraries, result)
+ local libinfo = libraries[name]
+ if libinfo then
+ print("find", name, libinfo)
+ end
+ local targetinfo = targets[name]
+ if targetinfo then
+ local dependencies = targetinfo.dependencies
+ if dependencies then
+ for k, v in pairs(dependencies) do
+ _find_package(k .. "/" .. v, targets, libraries, result)
+ end
+ end
+ end
+end
+
-- find package from the nuget package manager
--
-- @param name the package name, e.g. zlib, pcre
@@ -38,6 +54,31 @@ function main(name, opt)
local installdir = assert(opt.installdir, "installdir not found!")
local stubdir = path.join(installdir, "stub")
local manifestfile = path.join(stubdir, "obj", "project.assets.json")
+ if not os.isfile(manifestfile) then
+ return
+ end
local manifest = json.loadfile(manifestfile)
- print(manifest)
+ local targets
+ for k, v in pairs(manifest.targets) do
+ targets = v
+ break
+ end
+ local target_root
+ if targets then
+ for k, v in pairs(targets) do
+ if k:startswith(name) then
+ target_root = k
+ break
+ end
+ end
+ end
+ local libraries = manifest.libraries
+ if target_root and libraries then
+ local result = {}
+ _find_package(target_root, targets, libraries, result)
+ if result.links or result.includedirs then
+ return result
+ end
+ end
end
+