Something went wrong. Try again.
Odoc docs forked from jon.recoil.org/odd
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940open Bos
let ( >>= ) = Result.bind
module StringSet = Set.Make (String)module StringMap = Map.Make (String)
let with_dir dir pat f = match dir with | None -> OS.Dir.with_tmp pat f () |> Result.get_ok | Some dir -> f dir ()
let lines_of_channel ic = let rec inner acc = try let l = input_line ic in inner (l :: acc) with End_of_file -> List.rev acc in inner []
let lines_of_process cmd = match OS.Cmd.(run_out ~err:err_null cmd |> to_lines) with | Ok x -> x | Error (`Msg e) -> failwith ("Error: " ^ e)
(** Opens a file for writing and calls [f]. The destination directory is created if needed. *)let with_out_to filename f = let filename = Fpath.normalize filename in OS.Dir.create (Fpath.parent filename) >>= fun _ -> OS.File.with_oc filename (fun oc () -> f oc; Ok ()) () |> Result.join
let cp src dst = assert (lines_of_process Cmd.(v "cp" % src % dst) = [])