diff --git a/os/os.v b/os/os.v index af367f2b44..fe5caf50e7 100644 --- a/os/os.v +++ b/os/os.v @@ -316,6 +316,20 @@ pub fn getenv(key string) string { return string(s) } + +pub fn setenv(name string, value string, overwrite bool) int { + return C.setenv(name.cstr(), value.cstr(), overwrite) +} + +pub fn unsetenv(name string) int { + return C.unsetenv(name.cstr()) +} + +fn exit(code int) { + C.exit(code) +} + + // `file_exists` returns true if `path` exists. pub fn file_exists(path string) bool { res := false diff --git a/os/os_test.v b/os/os_test.v new file mode 100644 index 0000000000..21432655f4 --- /dev/null +++ b/os/os_test.v @@ -0,0 +1,21 @@ +import os + +fn test_setenv() { + os.setenv('foo', 'bar', true) + assert os.getenv('foo') == 'bar' + + // `setenv` should not set if `overwrite` is false + os.setenv('foo', 'bar2', false) + assert os.getenv('foo') == 'bar' + + // `setenv` should overwrite if `overwrite` is true + os.setenv('foo', 'bar2', true) + assert os.getenv('foo') == 'bar2' +} + +fn test_unsetenv() { + os.setenv('foo', 'bar', true) + os.unsetenv('foo') + assert os.getenv('foo') == '' +} +