Add poc files
This commit is contained in:
parent
30da2412e3
commit
fa600b98f7
220 changed files with 45679 additions and 0 deletions
93
commons_core/console.ml
Normal file
93
commons_core/console.ml
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
(* used to be called common_extra.ml *)
|
||||
|
||||
(*
|
||||
* How to use it ? ex in LFS:
|
||||
* Console.progress (w.prop_iprop#length) (fun k ->
|
||||
* w.prop_iprop#iter (fun (p, ip) ->
|
||||
* k ();
|
||||
* ...
|
||||
* ));
|
||||
*
|
||||
* todo: Unix.isatty, and the spinner trick of jason \ | / -
|
||||
*)
|
||||
|
||||
let execute_and_show_progress ~show len f =
|
||||
let _count = ref 0 in
|
||||
(* kind of continuation passed to f *)
|
||||
let continue_pourcentage () =
|
||||
incr _count;
|
||||
ANSITerminal.set_cursor 1 (-1);
|
||||
ANSITerminal.printf [] "%d / %d" !_count len; flush stdout;
|
||||
in
|
||||
let nothing () = () in
|
||||
|
||||
(* ANSITerminal.printf [] "0 / %d" len; flush stdout; *)
|
||||
(if !Common2._batch_mode || not show
|
||||
then f nothing
|
||||
else f continue_pourcentage
|
||||
);
|
||||
Common.pr2 ""
|
||||
|
||||
|
||||
let execute_and_show_progress2 ?(show=true) len f =
|
||||
let _count = ref 0 in
|
||||
(* kind of continuation passed to f *)
|
||||
let continue_pourcentage () =
|
||||
incr _count;
|
||||
ANSITerminal.set_cursor 1 (-1);
|
||||
ANSITerminal.printf [] "%d / %d" !_count len; flush stdout;
|
||||
in
|
||||
let nothing () = () in
|
||||
|
||||
(* ANSITerminal.printf [] "0 / %d" len; flush stdout; *)
|
||||
if !Common2._batch_mode || not show
|
||||
then f nothing
|
||||
else f continue_pourcentage
|
||||
|
||||
let with_progress_list_metter ?show fk xs =
|
||||
let len = List.length xs in
|
||||
execute_and_show_progress2 ?show len
|
||||
(fun k -> fk k xs)
|
||||
|
||||
let progress ?show fk xs =
|
||||
with_progress_list_metter ?show fk xs
|
||||
|
||||
|
||||
(*
|
||||
(* old code
|
||||
let ansi_terminal = ref true *)
|
||||
|
||||
let (_execute_and_show_progress_func:
|
||||
(show:bool ->
|
||||
int (* length *) -> ((unit -> unit) -> 'a) -> 'a) ref)
|
||||
= ref
|
||||
(fun ~show a b ->
|
||||
failwith "no execute yet, have you included common_extra.cmo?"
|
||||
)
|
||||
|
||||
let execute_and_show_progress ?(show=true) len f =
|
||||
!_execute_and_show_progress_func ~show len f
|
||||
|
||||
(* don't forget to call Common_extra.set_link () *)
|
||||
|
||||
val _execute_and_show_progress_func :
|
||||
(show:bool -> int (* length *) -> ((unit -> unit) -> unit) -> unit)
|
||||
ref
|
||||
val execute_and_show_progress :
|
||||
?show:bool -> int (* length *) -> ((unit -> unit) -> unit) -> unit
|
||||
|
||||
let set_link () =
|
||||
Common2._execute_and_show_progress_func := execute_and_show_progress
|
||||
|
||||
|
||||
let _init_execute =
|
||||
set_link ()
|
||||
|
||||
|
||||
*)
|
||||
|
||||
(* now in common_extra.ml:
|
||||
* let execute_and_show_progress len f = ...
|
||||
*)
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue