Env

The Env module provides access to environment variables and system information.

Environment Variables

Env.get
String -> Option String
Returns the value of an environment variable, or None if not set.
match Env.get "HOME"
    | Some home -> println "Home: ${home}"
    | None -> println "HOME not set"
Env.get-path
String -> Option String
Returns the value of an environment variable as a path, expanding ~ to the home directory. Returns None if not set.
# If MY_PATH is set to "~/Documents/project"
match Env.get-path "MY_PATH"
    | Some path -> println "Path: ${path}"
    | None -> println "MY_PATH not set"
# => "Path: /home/user/Documents/project"
Env.set
String -> String -> Bool
Sets an environment variable. Returns true on success.
Env.set "MY_VAR" "value"
Env.remove
String -> Bool
Removes an environment variable. Returns true on success.

Directories

Env.home-dir
() -> Option String
Returns the user's home directory.
home = Env.home-dir
println home
# => Some "/home/user"
Env.current-dir
() -> Option String
Returns the current working directory.
cwd = Env.current-dir
println cwd
# => Some "/home/user/project"

System Information

Env.hostname
() -> Option String
Returns the system hostname.
match Env.hostname()
  | Some name -> println "Host: ${name}"
  | None -> println "Unknown host"
# => "Host: my-laptop"
Env.username
() -> Option String
Returns the current user's username.
match Env.username()
  | Some user -> println "User: ${user}"
  | None -> println "Unknown user"
# => "User: alice"

Command Line Arguments

Env.args
() -> List String
Returns the command line arguments passed to the program.
args = Env.args()
args |> each (fn(arg) => println "Arg: ${arg}")