summaryrefslogtreecommitdiff
path: root/xmake
diff options
context:
space:
mode:
Diffstat (limited to 'xmake')
-rw-r--r--xmake/actions/addon/main.lua5
-rw-r--r--xmake/core/package/addon.lua19
-rw-r--r--xmake/core/package/package.lua9
-rw-r--r--xmake/modules/private/action/require/impl/actions/install.lua3
4 files changed, 26 insertions, 10 deletions
diff --git a/xmake/actions/addon/main.lua b/xmake/actions/addon/main.lua
index d072cec7f..52cb2376b 100644
--- a/xmake/actions/addon/main.lua
+++ b/xmake/actions/addon/main.lua
@@ -179,7 +179,8 @@ end
function _collect_installed_addons()
local entries = {}
for name, addoninfo in pairs(addon.rescan()) do
- table.insert(entries, {name = name, version = addoninfo.version, payloads = addoninfo.payloads})
+ table.insert(entries, {name = name, version = addoninfo.version,
+ description = addoninfo.description, payloads = addoninfo.payloads})
end
table.sort(entries, function (a, b) return a.name < b.name end)
return entries
@@ -237,7 +238,7 @@ function _list()
if #installed > 0 then
for _, entry in ipairs(installed) do
local note = string.format("(%s, %s)", entry.version, table.concat(entry.payloads, ", "))
- _print_addon(entry.name, nil, width, note)
+ _print_addon(entry.name, entry.description, width, note)
end
else
print(" (none)")
diff --git a/xmake/core/package/addon.lua b/xmake/core/package/addon.lua
index 35966853d..d433bdf8a 100644
--- a/xmake/core/package/addon.lua
+++ b/xmake/core/package/addon.lua
@@ -170,11 +170,15 @@ end
--
-- @param name the addon name
-- @param version the addon version, e.g. "1.0.1", "latest"
+-- @param opt the options, e.g. {description = "..."}
--
-function addon.register(name, version)
+function addon.register(name, version, opt)
+ opt = opt or {}
local dirname = addon.dirname(name)
local addons = addon.addons()
- addons[dirname] = {version = version, payloads = addon.payloads_of(path.join(addon.installdir(), dirname, version))}
+ addons[dirname] = {version = version,
+ description = opt.description,
+ payloads = addon.payloads_of(path.join(addon.installdir(), dirname, version))}
addon._save(addons)
end
@@ -193,11 +197,20 @@ end
-- it's only used to repair the registry file, e.g. the user removed some addon directories manually
--
function addon.rescan()
+ local oldaddons = addon.addons()
local addons = {}
for _, versiondir in ipairs(os.dirs(path.join(addon.installdir(), "*", "*"))) do
local payloads = addon.payloads_of(versiondir)
if #payloads > 0 then
- addons[path.filename(path.directory(versiondir))] = {version = path.filename(versiondir), payloads = payloads}
+ local dirname = path.filename(path.directory(versiondir))
+ local version = path.filename(versiondir)
+ -- we need to keep the description, we cannot get it from the installed payloads
+ local oldaddoninfo = oldaddons[dirname]
+ local description
+ if oldaddoninfo and oldaddoninfo.version == version then
+ description = oldaddoninfo.description
+ end
+ addons[dirname] = {version = version, description = description, payloads = payloads}
end
end
addon._save(addons)
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 2b56ee332..9d0cdc49d 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -1216,10 +1216,11 @@ function _instance:_rawenvs()
end
-- add plugin env for on_test
- if self:is_addon() then
- -- e.g. ~/.xmake/addons/<name>/<version>/plugins
- envs.XMAKE_PLUGIN_DIRS = path.join(self:installdir(), "plugins")
- elseif self:is_plugin() then
+ --
+ -- @note we need not do it for the addon packages, they are registered
+ -- to the addons registry after installing, and xmake can find their payloads directly
+ --
+ if self:is_plugin() then
envs.XMAKE_PLUGIN_DIRS = path.directory(self:installdir())
end
self._RAWENVS = envs
diff --git a/xmake/modules/private/action/require/impl/actions/install.lua b/xmake/modules/private/action/require/impl/actions/install.lua
index 7e60b16b6..40ca225f0 100644
--- a/xmake/modules/private/action/require/impl/actions/install.lua
+++ b/xmake/modules/private/action/require/impl/actions/install.lua
@@ -503,7 +503,8 @@ function main(package)
-- register this addon, so that xmake can find its payloads, e.g. plugins
if package:is_addon() then
- addon.register(package:name(), package:version_str() or "latest")
+ addon.register(package:name(), package:version_str() or "latest",
+ {description = package:description()})
end
installed_now = true
end