Packages
gleam_stdlib
0.16.0
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
src/gleam/os.gleam
//// Function to interact with the host operating system.
import gleam/list
import gleam/map.{Map}
import gleam/string
// Internal type for erlang interop.
external type CharList
external fn os_getenv() -> List(CharList) =
"os" "getenv"
external fn os_putenv(key: CharList, value: CharList) -> Bool =
"os" "putenv"
external fn os_unsetenv(key: CharList) -> Bool =
"os" "unsetenv"
external fn char_list_to_string(CharList) -> String =
"unicode" "characters_to_binary"
external fn string_to_char_list(String) -> CharList =
"unicode" "characters_to_list"
/// Returns all environment variables set on the system.
pub fn get_env() -> Map(String, String) {
list.map(
os_getenv(),
fn(char_list) {
assert Ok(value) = string.split_once(char_list_to_string(char_list), "=")
value
},
)
|> map.from_list()
}
/// Sets an environment variable.
pub fn insert_env(key: String, value: String) -> Nil {
os_putenv(string_to_char_list(key), string_to_char_list(value))
Nil
}
/// Deletes an environment variable.
pub fn delete_env(key: String) -> Nil {
os_unsetenv(string_to_char_list(key))
Nil
}
pub type TimeUnit {
Second
Millisecond
Microsecond
Nanosecond
}
/// Returns the current OS system time.
///
/// https://erlang.org/doc/apps/erts/time_correction.html#OS_System_Time
pub external fn system_time(TimeUnit) -> Int =
"os" "system_time"
/// Returns the current OS system time as a tuple of Ints
///
/// http://erlang.org/doc/man/os.html#timestamp-0
pub external fn erlang_timestamp() -> #(Int, Int, Int) =
"os" "timestamp"