summaryrefslogtreecommitdiff
path: root/xmake/core
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/core')
-rw-r--r--xmake/core/package/addon.lua19
-rw-r--r--xmake/core/package/package.lua9
2 files changed, 21 insertions, 7 deletions
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