sig
type descr =
Dispatch_arg.descr = {
name : string option;
descr : string;
arg_descr : string;
}
type 'a t =
'a Dispatch_arg.t = {
run : string list -> 'a option;
doc : descr option;
}
module Spec :
sig
type ('a, 'b) t = ('a, 'b) Dispatch_arg.Spec.t
module Result :
sig
type ('a, 'b) t = ('a, 'b) Dispatch_arg.Spec.Result.t
val unit : (unit, string) t
val ok : (unit, string) t
val bool : (bool, string) t
val big_string : (Core.Std.Bigstring.t, string) t
val string : (string, string) t
val int : (int, string) t
val list : ?sep:string -> ('a, string) t -> ('a list, string) t
val create : ('a -> 'b) -> ('a, 'b) t
end
module Infix :
sig
val ( ++ ) : ('a, 'b) t -> ('c, 'a) t -> ('c, 'b) t
val ( --> ) : ('a, 'b) t -> ('a, 'c) Result.t -> ('c, 'b) t
end
val ( ++ ) : ('a, 'b) t -> ('c, 'a) t -> ('c, 'b) t
val ( --> ) : ('a, 'b) t -> ('a, 'c) Result.t -> ('c, 'b) t
val string : string -> ('a, string -> 'a) t
val int : string -> ('a, int -> 'a) t
val unit : ('a, unit -> 'a) t
val list : (unit, 'a -> unit) t -> ('b, 'a list -> 'b) t
val option : ('a, 'b -> 'a) t -> ('a, 'b option -> 'a) t
val choice : ('a, 'b) t list -> ('a, 'b) t
val create : (string -> 'a option) -> string -> ('b, 'a -> 'b) t
val map1 : f:('a -> 'b) -> ('c, 'a -> 'c) t -> ('c, 'b -> 'c) t
val map2 :
f:('a -> 'b -> 'c) -> ('d, 'a -> 'b -> 'd) t -> ('d, 'c -> 'd) t
val map3 :
f:('a -> 'b -> 'c -> 'd) ->
('e, 'a -> 'b -> 'c -> 'e) t -> ('e, 'd -> 'e) t
end
val embed : ?cmd:string -> descr:string -> 'a -> ('b, 'a) Spec.t -> 'b t
val declare : ?doc:descr -> (string list -> 'a option) -> 'a t
val run :
?prog_name:string ->
?args:string list -> ?global:Core.Std.Arg.t list -> string t list -> 'a
val run_gen :
?prog_name:string ->
?args:string list -> ?global:Core.Std.Arg.t list -> 'a t list -> 'a
type shell =
Dispatch_arg.shell = {
prompt : unit -> string;
quit : 'a. unit -> 'a;
err : exn -> unit;
}
val default_shell : shell
val shell : shell -> ?global:Core.Std.Arg.t list -> string t list -> 'a
end