OCaml: Add separate logging channels and a dedicated 'command' type

This commit is contained in:
Juno Takano 2025-04-13 22:12:44 -03:00
commit ac3dbe4d30
9 changed files with 72 additions and 36 deletions

View file

@ -1,11 +1,9 @@
open Utilities.Aliases
let run (command: string) (arguments: string list) =
let run (command: Command.command): Command.command =
match Unix.fork () with
| 0 -> Unix.execvp command (Array.of_list arguments)
| 0 -> Unix.execvp command.name (Array.of_list command.arguments)
| pid -> let (_, status) = Unix.waitpid [] pid in
match status with
| Unix.WEXITED 0 -> ()
| Unix.WEXITED n -> print ("Process exited with code " ^ str_int n)
| Unix.WSIGNALED n -> print ("Process terminated by signal " ^ str_int n)
| Unix.WSTOPPED n -> print ("Process stopped by signal " ^ str_int n)
| WSTOPPED n | WSIGNALED n | WEXITED n -> { command with status = Exit n }
let run_many (commands: Command.command list): Command.command list =
List.map run commands