1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/os/environment.js.v
Delyan Angelov 1aaac13a60
cgen: make os less special, fix an -autofree leak on just import os
* Improve documentation of v.util.Surrounder

* Remove `os` from the list of "no auto free" `builtin` mods

* Fix -autofree freeing of `const x = []string{}`.

* Add a valgrind regression test.

* Implement os.getenv_opt in vlib/os/environment.js.v too.
2021-11-21 21:50:10 +02:00

49 lines
1.0 KiB
V

module os
$if js_node {
#global.$ENV = $process.env
} $else {
#global.$ENV = {}
}
// setenv sets the value of an environment variable with `name` to `value`.
pub fn setenv(key string, val string, overwrite bool) {
#if ($ENV[key] && !(overwrite.valueOf())) return;
#$ENV[key] = val + '';
}
// `getenv` returns the value of the environment variable named by the key.
pub fn getenv(key string) string {
mut res := ''
#if ($ENV[key]) res = new string($ENV[key])
return res
}
// `getenv_opt` returns the value of the environment variable named by the key.
// If such an environment variable does not exist, then it returns `none`.
pub fn getenv_opt(key string) ?string {
#if (!$ENV[key]) return none__;
mut res := ''
#if ($ENV[key]) res = new string($ENV[key]);
return res
}
// unsetenv clears an environment variable with `name`.
pub fn unsetenv(name string) int {
#$ENV[name] = ""
return 1
}
pub fn environ() map[string]string {
mut res := map[string]string{}
#for (const key in $ENV) {
#res.map.set(key,$ENV[key])
#}
return res
}