summaryrefslogtreecommitdiff
path: root/xmake/actions/addon/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/actions/addon/main.lua')
-rw-r--r--xmake/actions/addon/main.lua19
1 files changed, 14 insertions, 5 deletions
diff --git a/xmake/actions/addon/main.lua b/xmake/actions/addon/main.lua
index 722cdd52d..b99df4fe0 100644
--- a/xmake/actions/addon/main.lua
+++ b/xmake/actions/addon/main.lua
@@ -94,11 +94,20 @@ function _install_from_local(dir, name)
for _, payloaddir in ipairs(addon.payloads_of(payloadroot)) do
os.vcp(path.join(payloadroot, payloaddir), path.join(dstdir, payloaddir))
end
- local ok, errors = addon.register(name, LOCALVERSION)
- if not ok then
- os.tryrm(dstdir)
- raise(errors)
- end
+ -- we need to roll back the installed payloads if it cannot be registered, e.g. the name conflicts
+ try
+ {
+ function ()
+ addon.register(name, LOCALVERSION)
+ end,
+ catch
+ {
+ function (errors)
+ os.tryrm(dstdir)
+ raise(errors)
+ end
+ }
+ }
cprint("${color.success}install ${bright}%s${clear} ok!", name)
end