summaryrefslogtreecommitdiff
path: root/xmake/core/base/os.lua
diff options
context:
space:
mode:
authorOpportunityLiu <[email protected]>2019-07-22 11:02:35 +0800
committerOpportunityLiu <[email protected]>2019-07-22 12:07:03 +0800
commit98c3052c933d988aa9e56aa433c433e7274164db (patch)
treede3ea686c7c04bff82d875acc24a905e313ded76 /xmake/core/base/os.lua
parent06b91f200e5c2f918624002a8989ddda61389930 (diff)
add level to error
Diffstat (limited to 'xmake/core/base/os.lua')
-rw-r--r--xmake/core/base/os.lua22
1 files changed, 17 insertions, 5 deletions
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua
index 2f17ebc27..b8d767efd 100644
--- a/xmake/core/base/os.lua
+++ b/xmake/core/base/os.lua
@@ -706,7 +706,10 @@ end
--
-- the parent function will capture it if we uses pcall or xpcall
--
-function os.raise(msg, ...)
+function os.raiselevel(level, msg, ...)
+
+ -- set level of this function
+ level = level + 1
-- flush log
log:flush()
@@ -716,19 +719,28 @@ function os.raise(msg, ...)
-- raise it
if type(msg) == "string" then
- error(string.tryformat(msg, ...))
+ error(string.tryformat(msg, ...), level)
elseif type(msg) == "table" then
local errobjstr, errors = string.serialize(msg, true)
if errobjstr then
- error("[@encode(error)]: " .. errobjstr)
+ error("[@encode(error)]: " .. errobjstr, level)
else
- error(errors)
+ error(errors, level)
end
else
- error()
+ error(tostring(msg), level)
end
end
+-- raise an exception and abort the current script
+--
+-- the parent function will capture it if we uses pcall or xpcall
+--
+function os.raise(msg, ...)
+ -- add return to make it a tail call
+ return os.raiselevel(1, msg, ...)
+end
+
-- is executable program file?
function os.isexec(filepath)