From aba236a6968a3a7422ab500ce7cd13c1c823657a Mon Sep 17 00:00:00 2001 From: xqyjlj Date: Mon, 4 Mar 2024 00:16:38 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20=E6=B7=BB=E5=8A=A0manifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xqyjlj --- packages/c/csp_hal_apm32f1/manifest.json | 11 +++++++++ tools/scripts/tasks/csp-repo/main.lua | 29 ++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 packages/c/csp_hal_apm32f1/manifest.json diff --git a/packages/c/csp_hal_apm32f1/manifest.json b/packages/c/csp_hal_apm32f1/manifest.json new file mode 100644 index 0000000..da60f48 --- /dev/null +++ b/packages/c/csp_hal_apm32f1/manifest.json @@ -0,0 +1,11 @@ +{ + "company": "Geehy", + "versions": { + "latest": { + "size": 0 + }, + "v0.0.1": { + "size": 14.8 + } + } +} diff --git a/tools/scripts/tasks/csp-repo/main.lua b/tools/scripts/tasks/csp-repo/main.lua index 1d5c9f7..018645a 100644 --- a/tools/scripts/tasks/csp-repo/main.lua +++ b/tools/scripts/tasks/csp-repo/main.lua @@ -101,9 +101,17 @@ end function dump_table() local packagelist = {toolchain = {}, library = {}} + local repositories_dir = option.get("repositories") + local installed_list = nil + + if repositories_dir then + installed_list = list_table(repositories_dir) + end + for _, packagedir in ipairs(os.dirs(path.join(rootdir, "packages", "*", "*"))) do local packagename = path.filename(packagedir) local packagefile = path.join(packagedir, "xmake.lua") + local manifestfile = path.join(packagedir, "manifest.json") local packageinstance = package.load_from_repository(packagename, packagedir, {packagefile = packagefile}) local on_load = packageinstance:get("load") if on_load then @@ -111,7 +119,7 @@ function dump_table() end local pkg = {} local urls = packageinstance:get("urls") or os.raise("%s urls is empty", packagename) - local versions = packageinstance:get("versions") or {latest = "nil"} + local versions = packageinstance:get("versions") or {latest = "nil", sha256 = "unknown"} local description = packageinstance:get("description") or "unknown" local homepage = packageinstance:get("homepage") or "unknown" local license = packageinstance:get("license") or "unknown" @@ -122,11 +130,28 @@ function dump_table() pkg["urls"] = {urls} end - pkg["versions"] = packageinstance:get("versions") or {latest = "nil"} pkg["description"] = description pkg["homepage"] = homepage pkg["license"] = license + if os.isfile(manifestfile) then + manifest = json.loadfile(manifestfile) + pkg["company"] = manifest["company"] + pkg["versions"] = manifest["versions"] + else + pkg["company"] = "unknown" + pkg["versions"] = {} + end + + for version, version_info in pairs(pkg["versions"]) do + version_info["sha256"] = versions[version] or "unknown" + if installed_list and installed_list[packagename] and installed_list[packagename][version] then + version_info["installed"] = true + else + version_info["installed"] = false + end + end + if packageinstance:get("kind") then packagelist[packageinstance:get("kind")][packagename] = pkg else