// Shell/Process example - demonstrates the Process effect // // This script runs shell commands and uses environment variables fn main(): Unit with {Process, Console} = { Console.print("=== Lux Shell Example ===") Console.print("") // Get current working directory let cwd = Process.cwd() Console.print("Current directory: " + cwd) Console.print("") // Get environment variables Console.print("Environment variables:") match Process.env("USER") { Some(user) => Console.print(" USER: " + user), None => Console.print(" USER: (not set)") } match Process.env("HOME") { Some(home) => Console.print(" HOME: " + home), None => Console.print(" HOME: (not set)") } match Process.env("SHELL") { Some(shell) => Console.print(" SHELL: " + shell), None => Console.print(" SHELL: (not set)") } Console.print("") // Run shell commands Console.print("Running shell commands:") let date = Process.exec("date") Console.print(" date: " + String.trim(date)) let kernel = Process.exec("uname -r") Console.print(" kernel: " + String.trim(kernel)) let files = Process.exec("ls examples/*.lux | wc -l") Console.print(" .lux files in examples/: " + String.trim(files)) Console.print("") // Command line arguments Console.print("Command line arguments:") let args = Process.args() let argCount = List.length(args) if argCount == 0 then { Console.print(" (no arguments)") } else { Console.print(" Count: " + toString(argCount)) match List.head(args) { Some(first) => Console.print(" First: " + first), None => Console.print(" First: (empty)") } } } let result = run main() with {}