summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-05-23 22:12:06 +0800
committerruki <[email protected]>2017-05-23 22:12:06 +0800
commita23adbdd4bf9e45589ddae31c2744e2328114b6d (patch)
treeff43be29cc08bfb55621f2dd702c8c187011e298
parent62cb9b70b1682156c8f8a160eb18604b2226a5b2 (diff)
add os.addenv and improve os.setenv
-rw-r--r--xmake/core/base/os.lua22
-rw-r--r--xmake/core/sandbox/modules/os.lua18
2 files changed, 36 insertions, 4 deletions
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua
index 5a496b414..95ebfa79f 100644
--- a/xmake/core/base/os.lua
+++ b/xmake/core/base/os.lua
@@ -38,6 +38,7 @@ os._gid = os._gid or os.gid
os._mkdir = os._mkdir or os.mkdir
os._rmdir = os._rmdir or os.rmdir
os._tmpdir = os._tmpdir or os.tmpdir
+os._setenv = os._setenv or os.setenv
os._versioninfo = os._versioninfo or os.versioninfo
-- copy single file or directory
@@ -658,6 +659,27 @@ function os.isroot()
return os.uid().euid == 0
end
+-- set values to environment variable
+function os.setenv(name, ...)
+
+ -- get separator
+ local seperator = utils.ifelse(os.host() == "windows", ';', ':')
+
+ -- append values
+ return os._setenv(name, table.concat({...}, seperator))
+end
+
+-- add values to environment variable
+function os.addenv(name, ...)
+
+ -- get separator
+ local seperator = utils.ifelse(os.host() == "windows", ';', ':')
+
+ -- append values
+ return os.setenv(name, table.concat({...}, seperator) .. seperator .. (os.getenv(name) or ""))
+
+end
+
-- get version info
function os.versioninfo()
diff --git a/xmake/core/sandbox/modules/os.lua b/xmake/core/sandbox/modules/os.lua
index 03943072d..083181c00 100644
--- a/xmake/core/sandbox/modules/os.lua
+++ b/xmake/core/sandbox/modules/os.lua
@@ -423,7 +423,7 @@ function sandbox_os.raise(msg, ...)
os.raise(msg, ...)
end
--- get the envirnoment variables
+-- get values of the envirnoment variable
function sandbox_os.getenv(name)
-- check
@@ -433,14 +433,24 @@ function sandbox_os.getenv(name)
return os.getenv(name)
end
--- set the envirnoment variables
-function sandbox_os.setenv(name, values)
+-- set values to the envirnoment variable
+function sandbox_os.setenv(name, ...)
-- check
assert(name)
-- set it
- os.setenv(name, values)
+ os.setenv(name, ...)
+end
+
+-- add values to the envirnoment variable
+function sandbox_os.addenv(name, ...)
+
+ -- check
+ assert(name)
+
+ -- add it
+ os.addenv(name, ...)
end
-- make a new uuid