summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-07-22 13:56:04 +0800
committerGitHub <[email protected]>2019-07-22 13:56:04 +0800
commit4fafbae0430e7f9b4a85d280d6fb0efbd2cf35b5 (patch)
tree5d37ad16fcdd6db1c7fa4b2080d20643673439fa
parentde065e129a52e21b96104c897216d8b2b77afba6 (diff)
parent145358ba831e7a90f275118a0556787754fe2fa6 (diff)
Merge pull request #503 from OpportunityLiu/dev
Improve error messge
-rw-r--r--core/src/xmake/io/open.c9
-rw-r--r--xmake/core/base/os.lua22
-rw-r--r--xmake/core/sandbox/modules/utils.lua8
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/Xmake.props11
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/Xmake.targets26
5 files changed, 46 insertions, 30 deletions
diff --git a/core/src/xmake/io/open.c b/core/src/xmake/io/open.c
index e77571230..4ca820371 100644
--- a/core/src/xmake/io/open.c
+++ b/core/src/xmake/io/open.c
@@ -180,13 +180,12 @@ tb_int_t xm_io_open(lua_State* lua)
tb_assert_and_check_return_val(path && modestr, 0);
// get file mode value
- tb_size_t mode = TB_FILE_MODE_RW;
+ tb_size_t mode;
switch (modestr[0])
{
- case 'w': mode |= TB_FILE_MODE_CREAT | TB_FILE_MODE_TRUNC; break;
- case 'a': mode |= TB_FILE_MODE_APPEND | TB_FILE_MODE_CREAT; break;
- case 'r': mode = TB_FILE_MODE_RO; break;
- default: break;
+ case 'w': mode = TB_FILE_MODE_RW | TB_FILE_MODE_CREAT | TB_FILE_MODE_TRUNC; break;
+ case 'a': mode = TB_FILE_MODE_RW | TB_FILE_MODE_APPEND | TB_FILE_MODE_CREAT; break;
+ case 'r': default: mode = TB_FILE_MODE_RO; break;
}
// get file encoding
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)
diff --git a/xmake/core/sandbox/modules/utils.lua b/xmake/core/sandbox/modules/utils.lua
index a81c84ded..f71d2a72b 100644
--- a/xmake/core/sandbox/modules/utils.lua
+++ b/xmake/core/sandbox/modules/utils.lua
@@ -20,6 +20,7 @@
-- load modules
local io = require("base/io")
+local os = require("base/os")
local utils = require("base/utils")
local colors = require("base/colors")
local option = require("base/option")
@@ -27,7 +28,6 @@ local log = require("base/log")
local try = require("sandbox/modules/try")
local catch = require("sandbox/modules/catch")
local vformat = require("sandbox/modules/vformat")
-local raise = require("sandbox/modules/raise")
-- define module
local sandbox_utils = sandbox_utils or {}
@@ -173,13 +173,13 @@ function sandbox_utils.assert(value, format, ...)
-- check
if not value then
if format ~= nil then
- raise(format, ...)
+ os.raiselevel(2, format, ...)
else
- raise("assertion failed!")
+ os.raiselevel(2, "assertion failed!")
end
end
- -- return it
+ -- return it
return value
end
diff --git a/xmake/plugins/project/vsxmake/vsproj/Xmake.props b/xmake/plugins/project/vsxmake/vsproj/Xmake.props
index 55fd2bdc5..0b60d77d2 100644
--- a/xmake/plugins/project/vsxmake/vsproj/Xmake.props
+++ b/xmake/plugins/project/vsxmake/vsproj/Xmake.props
@@ -126,6 +126,17 @@
<IntDir>$(XmakeBuilDir)\.vs\$(TargetName)\$(XmakeArch)\$(XmakeMode)\</IntDir>
</PropertyGroup>
+ <PropertyGroup Label="Debugger">
+ <LocalDebuggerWorkingDirectory>$(XmakeRunDir)</LocalDebuggerWorkingDirectory>
+ <LocalDebuggerEnvironment>$(XmakeRunEnvs)
+$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
+ <LocalDebuggerMergeEnvironment>true</LocalDebuggerMergeEnvironment>
+ <RemoteDebuggerWorkingDirectory>$(XmakeRunDir)</RemoteDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsRemoteDebugger</DebuggerFlavor>
+ <RemoteDebuggerEnvironment>$(XmakeRunEnvs)
+$(RemoteDebuggerEnvironment)</RemoteDebuggerEnvironment>
+ </PropertyGroup>
+
<!-- Common files -->
<ItemGroup>
<None Condition="Exists('$(MSBuildProjectDirectory)\Xmake.Custom.props')"
diff --git a/xmake/plugins/project/vsxmake/vsproj/Xmake.targets b/xmake/plugins/project/vsxmake/vsproj/Xmake.targets
index 8aa2db642..9276756a5 100644
--- a/xmake/plugins/project/vsxmake/vsproj/Xmake.targets
+++ b/xmake/plugins/project/vsxmake/vsproj/Xmake.targets
@@ -37,17 +37,6 @@
<XmakeRunDirResolved>$([System.IO.Path]::GetFullPath('$(XmakeRunDirResolved)/'))</XmakeRunDirResolved>
</PropertyGroup>
- <PropertyGroup Label="Debugger">
- <LocalDebuggerWorkingDirectory>$(XmakeRunDirResolved)</LocalDebuggerWorkingDirectory>
- <LocalDebuggerEnvironment>$(XmakeRunEnvs)
-$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
- <LocalDebuggerMergeEnvironment>true</LocalDebuggerMergeEnvironment>
- <RemoteDebuggerWorkingDirectory>$(XmakeRunDirResolved)</RemoteDebuggerWorkingDirectory>
- <DebuggerFlavor>WindowsRemoteDebugger</DebuggerFlavor>
- <RemoteDebuggerEnvironment>$(XmakeRunEnvs)
-$(RemoteDebuggerEnvironment)</RemoteDebuggerEnvironment>
- </PropertyGroup>
-
<PropertyGroup Label="XmakeInternal">
<_XmakeProjectFlag Condition="'$(XmakeProjectFile)' != ''">-F "$(XmakeProjectFile)"</_XmakeProjectFlag>
<_XmakeProjectFlag Condition="'$(XmakeProjectFile)' == ''">-P .</_XmakeProjectFlag>
@@ -79,6 +68,7 @@ $(RemoteDebuggerEnvironment)</RemoteDebuggerEnvironment>
<_XmakeExecutable>"$([System.IO.Path]::GetFullPath('$(XmakeProgramDirResolved)xmake.exe'))"</_XmakeExecutable>
<_XmakeEnv>
chcp 65001 &gt; NUL
+ pushd $(XmakeProjectDirResolved)
set XMAKE_CONFIGDIR=$(XmakeConfigDirResolved.TrimEnd('/\'.ToCharArray()))
set XMAKE_PROGRAM_DIR=$(XmakeProgramDirResolved.TrimEnd('/\'.ToCharArray()))
</_XmakeEnv>
@@ -98,17 +88,17 @@ $(RemoteDebuggerEnvironment)</RemoteDebuggerEnvironment>
</Target>
<Target Name="_XmakeConfig" DependsOnTargets="_XmakeProjCheck">
<Message Text="$xmake config $(_XmakeCommonFlags) $(_XmakeConfigFlags) $(XmakeTarget)" Importance="High" />
- <Exec WorkingDirectory="$(XmakeProjectDirResolved)" StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
+ <Exec StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
$(_XmakeExecutable) config $(_XmakeCommonFlags) $(_XmakeConfigFlags) $(XmakeTarget)" EchoOff="true" />
</Target>
<Target Name="_XmakeReconfig" DependsOnTargets="_XmakeProjCheck">
<Message Text="$xmake config $(_XmakeCommonFlags) -c $(_XmakeConfigFlags) $(XmakeTarget)" Importance="High" />
- <Exec WorkingDirectory="$(XmakeProjectDirResolved)" StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
+ <Exec StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
$(_XmakeExecutable) config $(_XmakeCommonFlags) -c $(_XmakeConfigFlags) $(XmakeTarget)" EchoOff="true" />
</Target>
<Target Name="_XmakeBuild" DependsOnTargets="_XmakeProjCheck">
<Message Text="$xmake build $(_XmakeCommonFlags) $(_XmakeBuildFlags) $(XmakeTarget)" Importance="High" />
- <Exec WorkingDirectory="$(XmakeProjectDirResolved)" StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
+ <Exec StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
$(_XmakeExecutable) build $(_XmakeCommonFlags) $(_XmakeBuildFlags) $(XmakeTarget)" EchoOff="true" />
</Target>
<Target Name="_XmakeBuildFile" DependsOnTargets="_XmakeProjCheck">
@@ -121,12 +111,12 @@ $(RemoteDebuggerEnvironment)</RemoteDebuggerEnvironment>
<FileFlag>--files="$(FileList)"</FileFlag>
</PropertyGroup>
<Message Text="$xmake build $(_XmakeCommonFlags) $(_XmakeBuildFileFlags) $(FileFlag) $(XmakeTarget)" Importance="High" />
- <Exec WorkingDirectory="$(XmakeProjectDirResolved)" StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
+ <Exec StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
$(_XmakeExecutable) build $(_XmakeCommonFlags) $(_XmakeBuildFileFlags) $(FileFlag) $(XmakeTarget)" EchoOff="true" />
</Target>
<Target Name="_XmakeClean" DependsOnTargets="_XmakeProjCheck">
<Message Text="$xmake clean $(_XmakeCommonFlags) -a $(_XmakeCleanFlags) $(XmakeTarget)" Importance="High" />
- <Exec WorkingDirectory="$(XmakeProjectDirResolved)" StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
+ <Exec StdOutEncoding="utf-8" StdErrEncoding="utf-8" Command="$(_XmakeEnv)
$(_XmakeExecutable) clean $(_XmakeCommonFlags) -a $(_XmakeCleanFlags) $(XmakeTarget)" EchoOff="true" />
</Target>
@@ -150,15 +140,19 @@ MSBuild Properties:
XmakeProjectDir: $(XmakeProjectDir)
XmakeScriptDir: $(XmakeScriptDir)
XmakeBuilDir: $(XmakeBuilDir)
+ XmakeTargetDir: $(XmakeTargetDir)
XmakeConfigDir: $(XmakeConfigDir)
XmakeConfigFileDir: $(XmakeConfigFileDir)
+ XmakeRunDir: $(XmakeRunDir)
Xmake Resolved Path:
XmakeProgramDir: $(XmakeProgramDirResolved)
XmakeProjectDir: $(XmakeProjectDirResolved)
XmakeScriptDir: $(XmakeScriptDirResolved)
XmakeBuilDir: $(XmakeBuilDirResolved)
+ XmakeTargetDir: $(XmakeTargetDirResolved)
XmakeConfigDir: $(XmakeConfigDirResolved)
XmakeConfigFileDir: $(XmakeConfigFileDirResolved)
+ XmakeRunDir: $(XmakeRunDirResolved)
Xmake Flags:
XmakeWarning: $(XmakeWarning)
XmakeVerbose: $(XmakeVerbose)