// runtime/env.el — environment and process // Covers: environment variables, command-line args, process exit, in-process // state store, UUID generation, and list convenience helpers. // env — read an environment variable. Returns "" if the variable is not set. fn env(key: String) -> String { return __env_get(key) } // args — command-line arguments as a list of strings. // __args_json returns a JSON array (e.g. ["prog","arg1","arg2"]). // The list is built by iterating over the array. fn args() -> [String] { let json: String = __args_json() let n: Int = json_array_len(json) let result: [String] = el_list_empty() let i: Int = 0 while i < n { let item: String = json_array_get_string(json, i) let result = el_list_append(result, item) let i = i + 1 } return result } // exit_program — terminate the process with the given exit code. fn exit_program(code: Int) { __exit_program(code) } // ── List convenience helpers ─────────────────────────────────────────────── // get — index into a list. Thin alias for el_list_get used throughout the // El stdlib so call sites read like `get(lst, i)` rather than the verbose form. fn get(lst: [String], i: Int) -> String { return el_list_get(lst, i) } // len — length of a list. fn len(lst: [String]) -> Int { return el_list_len(lst) } // ── In-process key-value state store ────────────────────────────────────── // state_set — store a string value under key. fn state_set(key: String, val: String) { __state_set(key, val) } // state_get — retrieve value for key; returns "" if key not present. fn state_get(key: String) -> String { return __state_get(key) } // state_del — remove key from the store. fn state_del(key: String) { __state_del(key) } // state_keys — all keys currently in the store as a JSON array string. fn state_keys() -> String { return __state_keys() } // ── DHARMA runtime helpers ───────────────────────────────────────────────── // config — read a configuration value from the environment. // Returns "" if the variable is not set. Alias for env(). fn config(key: String) -> String { return __env_get(key) } // log_info — write an [INFO] log line to stdout. fn log_info(msg: String) { __println("[INFO] " + msg) } // log_warn — write a [WARN] log line to stdout. fn log_warn(msg: String) { __println("[WARN] " + msg) } // list_len — return the number of elements in a list. Alias for el_list_len. fn list_len(lst: [String]) -> Int { return el_list_len(lst) } // list_get — return the element at index i in a list. Alias for el_list_get. fn list_get(lst: [String], i: Int) -> String { return el_list_get(lst, i) } // ── UUID generation ──────────────────────────────────────────────────────── // uuid_new — generate a new random UUID v4. fn uuid_new() -> String { return __uuid_v4() } // uuid_v4 — alias for uuid_new(); explicit version name for callers that // need to be precise about the UUID variant. fn uuid_v4() -> String { return __uuid_v4() }