diff options
Diffstat (limited to 'xmake/core/package')
| -rw-r--r-- | xmake/core/package/addon.lua | 19 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 9 |
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 |
