package forester
A tool for tending mathematical forests
Install
Dune Dependency
Authors
Maintainers
Sources
2.2.1.tar.gz
md5=6f013c1c3c492725dfc153c79038b6d7
sha512=2d6eeb865a8939ff5ef9031e969a41c81480cf5ef814f83a68d98aebe84c67657587231d8ef0ae820becbe429064de70772ed5b7db60828dc5657f250df7fdfc
doc/src/forester.prelude/Shell.ml.html
Source file Shell.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
let within_dir dir kont = let cwd = Sys.getcwd () in Fun.protect ~finally:(fun _ -> Unix.chdir cwd) @@ fun _ -> Unix.chdir dir; kont () let ensure_dir dir = try Unix.mkdir dir 0o755 with | Unix.Unix_error (Unix.EEXIST, _, _) -> () let ensure_dir_path dirs = let rec loop prefix = function | [] -> () | dir :: dirs -> let dir' = Format.sprintf "%s/%s" prefix dir in ensure_dir dir'; loop dir' dirs in loop "." dirs let ensure_remove_file fp = try Unix.unlink fp with | Unix.Unix_error (Unix.ENOENT, _, _) -> () module Chan = struct let dump ~inp ~out = try while true do output_char out (input_char inp) done with End_of_file -> flush out end module Proc = struct let popen = Unix.open_process_args_full let pclose = Unix.close_process_full exception Error of int let status_code s = match s with | Unix.WEXITED r -> r | Unix.WSIGNALED r -> r | Unix.WSTOPPED r -> r let append_to_buffer b c = Buffer.add_channel b c 1 let read_to_EOF b c = try while true do append_to_buffer b c done with End_of_file -> () let run ?(quiet = false) cmd args = let cmd' = String.concat " " @@ cmd :: args in let ic, oc, ec as proc = begin if not quiet then Format.eprintf "Running %s@." cmd'; end; Unix.open_process_full cmd' (Unix.environment ()) in let out_buf = Buffer.create 32 in let err_buf = Buffer.create 32 in read_to_EOF out_buf ic; read_to_EOF err_buf ec; let s = Unix.close_process_full proc in match status_code s with | 0 -> () | code -> failwith @@ Format.sprintf "ERROR RUNNING [%s]: %s" cmd' (Buffer.contents err_buf); end let copy_file_to_dir ~source ~dest_dir = Proc.run ~quiet:true "cp" ["-r"; source; dest_dir]
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>