Files
el/runtime/env.el
T
Will Anderson f2c63f95fd add runtime/fs.el, exec.el, env.el — filesystem, subprocess, environment in El
Migrates fs_read/write/exists/mkdir/write_bytes/list, exec/exec_bg/exec_command/exec_capture,
env/args/exit_program, state_set/get/del/keys, uuid_new/v4, and list helpers get/len from
el_runtime.c into El source as thin wrappers over seed primitives.
2026-05-03 15:35:45 -05:00

78 lines
2.5 KiB
EmacsLisp

// 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()
}
// 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()
}