-module(gleam@os). -compile(no_auto_import). -export([get_env/0, insert_env/2, delete_env/1, system_time/1, erlang_timestamp/0]). -export_type([char_list/0, time_unit/0]). -type char_list() :: any(). -type time_unit() :: second | millisecond | microsecond | nanosecond. -spec get_env() -> gleam@map:map_(binary(), binary()). get_env() -> gleam@map:from_list( gleam@list:map( os:getenv(), fun(Char_list) -> {ok, Value@1} = case gleam@string:split_once( unicode:characters_to_binary(Char_list), <<"="/utf8>> ) of {ok, Value} -> {ok, Value}; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/os"/utf8>>, function => <<"get_env"/utf8>>, line => 30}) end, Value@1 end ) ). -spec insert_env(binary(), binary()) -> nil. insert_env(Key, Value) -> os:putenv( unicode:characters_to_list(Key), unicode:characters_to_list(Value) ), nil. -spec delete_env(binary()) -> nil. delete_env(Key) -> os:unsetenv(unicode:characters_to_list(Key)), nil. -spec system_time(time_unit()) -> integer(). system_time(A) -> os:system_time(A). -spec erlang_timestamp() -> {integer(), integer(), integer()}. erlang_timestamp() -> os:timestamp().