sig   type ('a, 'e) result = ('a, 'e) Result.result     constraint 'e = [> Rresult.R.msg ]   module Env :     sig       type t = string Astring.String.map       val current : unit -> (t, [> Rresult.R.msg ]) Bos.OS.result       val var : string -> string option       val set_var :         string -> string option -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val opt_var : string -> absent:string -> string       val req_var : string -> (string, [> Rresult.R.msg ]) Bos.OS.result       type 'parser = string -> ('a, Rresult.R.msg) Result.result       val parser : string -> (string -> 'a option) -> 'parser       val bool : bool parser       val string : string parser       val path : Fpath.t parser       val cmd : Bos.Cmd.t parser       val some : 'parser -> 'a option parser       val parse :         string ->         'parser -> absent:'-> ('a, [> Rresult.R.msg ]) Bos.OS.result       val value : ?log:Logs.level -> string -> 'parser -> absent:'-> 'a     end   module Arg :     sig       val exec : string       type 'a conv = 'Bos.OS.Arg.conv       val conv :         ?docv:string ->         (string -> ('a, Rresult.R.msg) Result.result) ->         (Format.formatter -> '-> unit) -> 'a conv       val conv_parser :         'a conv -> string -> ('a, Rresult.R.msg) Result.result       val conv_printer : 'a conv -> Format.formatter -> '-> unit       val conv_docv : 'a conv -> string       val parser_of_kind_of_string :         kind:string ->         (string -> 'a option) -> string -> ('a, Rresult.R.msg) Result.result       val some : ?none:string -> 'a conv -> 'a option conv       val flag : ?doc:string -> ?env:string -> string list -> bool       val flag_all : ?doc:string -> ?env:string -> string list -> int       val opt :         ?docv:string ->         ?doc:string ->         ?env:string -> string list -> 'a conv -> absent:'-> 'a       val opt_all :         ?docv:string ->         ?doc:string ->         ?env:string -> string list -> 'a conv -> absent:'a list -> 'a list       val parse_opts : ?doc:string -> ?usage:string -> unit -> unit       val parse :         ?doc:string -> ?usage:string -> pos:'a conv -> unit -> 'a list       val string : string conv       val path : Fpath.t conv       val bin : Bos.Cmd.t conv       val cmd : Bos.Cmd.t conv       val char : char conv       val bool : bool conv       val int : int conv       val nativeint : nativeint conv       val int32 : int32 conv       val int64 : int64 conv       val float : float conv       val enum : (string * 'a) list -> 'a conv       val list : ?sep:string -> 'a conv -> 'a list conv       val array : ?sep:string -> 'a conv -> 'a array conv       val pair : ?sep:string -> 'a conv -> 'b conv -> ('a * 'b) conv     end   module Path :     sig       val exists : Fpath.t -> (bool, [> Rresult.R.msg ]) Bos.OS.result       val must_exist : Fpath.t -> (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result       val move :         ?force:bool ->         Fpath.t -> Fpath.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val delete :         ?must_exist:bool ->         ?recurse:bool -> Fpath.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val stat : Fpath.t -> (Unix.stats, [> Rresult.R.msg ]) Bos.OS.result       module Mode :         sig           type t = int           val get : Fpath.t -> (t, [> Rresult.R.msg ]) Bos.OS.result           val set : Fpath.t -> t -> (unit, [> Rresult.R.msg ]) Bos.OS.result         end       val link :         ?force:bool ->         target:Fpath.t -> Fpath.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val symlink :         ?force:bool ->         target:Fpath.t -> Fpath.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val symlink_target :         Fpath.t -> (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result       val symlink_stat :         Fpath.t -> (Unix.stats, [> Rresult.R.msg ]) Bos.OS.result       val matches :         ?dotfiles:bool ->         Fpath.t -> (Fpath.t list, [> Rresult.R.msg ]) Bos.OS.result       val query :         ?dotfiles:bool ->         ?init:Bos.Pat.defs ->         Fpath.t ->         ((Fpath.t * Bos.Pat.defs) list, [> Rresult.R.msg ]) Bos.OS.result       type traverse =           [ `Any           | `None           | `Sat of Fpath.t -> (bool, Rresult.R.msg) Bos.OS.result ]       type elements =           [ `Any           | `Dirs           | `Files           | `Sat of Fpath.t -> (bool, Rresult.R.msg) Bos.OS.result ]       type 'a fold_error =           Fpath.t ->           ('a, Rresult.R.msg) Bos.OS.result ->           (unit, Rresult.R.msg) Bos.OS.result       val log_fold_error : level:Logs.level -> 'a fold_error       val fold :         ?err:'b fold_error ->         ?dotfiles:bool ->         ?elements:elements ->         ?traverse:traverse ->         (Fpath.t -> '-> 'a) ->         '-> Fpath.t list -> ('a, [> Rresult.R.msg ]) Bos.OS.result     end   module File :     sig       val null : Fpath.t       val dash : Fpath.t       val exists : Fpath.t -> (bool, [> Rresult.R.msg ]) Bos.OS.result       val must_exist : Fpath.t -> (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result       val delete :         ?must_exist:bool ->         Fpath.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val truncate :         Fpath.t -> int -> (unit, [> Rresult.R.msg ]) Bos.OS.result       type input = unit -> (Bytes.t * int * int) option       val with_input :         Fpath.t ->         (input -> '-> 'b) -> '-> ('b, [> Rresult.R.msg ]) Bos.OS.result       val with_ic :         Fpath.t ->         (in_channel -> '-> 'b) ->         '-> ('b, [> Rresult.R.msg ]) Bos.OS.result       val read : Fpath.t -> (string, [> Rresult.R.msg ]) Bos.OS.result       val read_lines :         Fpath.t -> (string list, [> Rresult.R.msg ]) Bos.OS.result       val fold_lines :         ('-> string -> 'a) ->         '-> Fpath.t -> ('a, [> Rresult.R.msg ]) Bos.OS.result       type output = (Bytes.t * int * int) option -> unit       val with_output :         ?mode:int ->         Fpath.t ->         (output -> '-> ('c, 'd) Result.result) ->         '-> (('c, 'd) Result.result, [> Rresult.R.msg ]) Bos.OS.result       val with_oc :         ?mode:int ->         Fpath.t ->         (out_channel -> '-> ('c, 'd) Result.result) ->         '-> (('c, 'd) Result.result, [> Rresult.R.msg ]) Bos.OS.result       val write :         ?mode:int ->         Fpath.t -> string -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val writef :         ?mode:int ->         Fpath.t ->         ('a, Format.formatter, unit,          (unit, [> Rresult.R.msg ]) Bos.OS.result)         format4 -> 'a       val write_lines :         ?mode:int ->         Fpath.t -> string list -> (unit, [> Rresult.R.msg ]) Bos.OS.result       type tmp_name_pat =           (string -> string, Format.formatter, unit, string) format4       val tmp :         ?mode:int ->         ?dir:Fpath.t ->         tmp_name_pat -> (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result       val with_tmp_output :         ?mode:int ->         ?dir:Fpath.t ->         tmp_name_pat ->         (Fpath.t -> output -> '-> 'b) ->         '-> ('b, [> Rresult.R.msg ]) Bos.OS.result       val with_tmp_oc :         ?mode:int ->         ?dir:Fpath.t ->         tmp_name_pat ->         (Fpath.t -> out_channel -> '-> 'b) ->         '-> ('b, [> Rresult.R.msg ]) Bos.OS.result     end   module Dir :     sig       val exists : Fpath.t -> (bool, [> Rresult.R.msg ]) Bos.OS.result       val must_exist : Fpath.t -> (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result       val create :         ?path:bool ->         ?mode:int -> Fpath.t -> (bool, [> Rresult.R.msg ]) Bos.OS.result       val delete :         ?must_exist:bool ->         ?recurse:bool -> Fpath.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val contents :         ?dotfiles:bool ->         ?rel:bool ->         Fpath.t -> (Fpath.t list, [> Rresult.R.msg ]) Bos.OS.result       val fold_contents :         ?err:'Bos.OS.Path.fold_error ->         ?dotfiles:bool ->         ?elements:Bos.OS.Path.elements ->         ?traverse:Bos.OS.Path.traverse ->         (Fpath.t -> '-> 'a) ->         '-> Fpath.t -> ('a, [> Rresult.R.msg ]) Bos.OS.result       val user : unit -> (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result       val current : unit -> (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result       val set_current : Fpath.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val with_current :         Fpath.t -> ('-> 'b) -> '-> ('b, [> Rresult.R.msg ]) Bos.OS.result       type tmp_name_pat =           (string -> string, Format.formatter, unit, string) format4       val tmp :         ?mode:int ->         ?dir:Fpath.t ->         tmp_name_pat -> (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result       val with_tmp :         ?mode:int ->         ?dir:Fpath.t ->         tmp_name_pat ->         (Fpath.t -> '-> 'b) -> '-> ('b, [> Rresult.R.msg ]) Bos.OS.result       val default_tmp : unit -> Fpath.t       val set_default_tmp : Fpath.t -> unit     end   module Cmd :     sig       val exists : Bos.Cmd.t -> (bool, [> Rresult.R.msg ]) Bos.OS.result       val must_exist :         Bos.Cmd.t -> (Bos.Cmd.t, [> Rresult.R.msg ]) Bos.OS.result       type status = [ `Exited of int | `Signaled of int ]       val pp_status : status Fmt.t       type run_info = Bos.OS.Cmd.run_info       val run_info_cmd : run_info -> Bos.Cmd.t       type run_status = run_info * status       val success :         ('a * run_status, [> Rresult.R.msg ] as 'b) Bos.OS.result ->         ('a, 'b) Bos.OS.result       type run_err = Bos.OS.Cmd.run_err       val err_file : ?append:bool -> Fpath.t -> run_err       val err_null : run_err       val err_run_out : run_err       val err_stderr : run_err       type run_in = Bos.OS.Cmd.run_in       val in_string : string -> run_in       val in_file : Fpath.t -> run_in       val in_null : run_in       val in_stdin : run_in       type run_out = Bos.OS.Cmd.run_out       val out_string :         ?trim:bool ->         run_out -> (string * run_status, [> Rresult.R.msg ]) Bos.OS.result       val out_lines :         ?trim:bool ->         run_out ->         (string list * run_status, [> Rresult.R.msg ]) Bos.OS.result       val out_file :         ?append:bool ->         Fpath.t ->         run_out -> (unit * run_status, [> Rresult.R.msg ]) Bos.OS.result       val out_run_in : run_out -> (run_in, [> Rresult.R.msg ]) Bos.OS.result       val out_null :         run_out -> (unit * run_status, [> Rresult.R.msg ]) Bos.OS.result       val out_stdout :         run_out -> (unit * run_status, [> Rresult.R.msg ]) Bos.OS.result       val to_string :         ?trim:bool -> run_out -> (string, [> Rresult.R.msg ]) Bos.OS.result       val to_lines :         ?trim:bool ->         run_out -> (string list, [> Rresult.R.msg ]) Bos.OS.result       val to_file :         ?append:bool ->         Fpath.t -> run_out -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val to_null : run_out -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val to_stdout : run_out -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val run_io :         ?env:Bos.OS.Env.t -> ?err:run_err -> Bos.Cmd.t -> run_in -> run_out       val run_out : ?env:Bos.OS.Env.t -> ?err:run_err -> Bos.Cmd.t -> run_out       val run_in :         ?env:Bos.OS.Env.t ->         ?err:run_err ->         Bos.Cmd.t -> run_in -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val run :         ?env:Bos.OS.Env.t ->         ?err:run_err -> Bos.Cmd.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result       val run_status :         ?env:Bos.OS.Env.t ->         ?err:run_err ->         ?quiet:bool ->         Bos.Cmd.t -> (status, [> Rresult.R.msg ]) Bos.OS.result     end   module U :     sig       type 'a result = ('a, [ `Unix of Unix.error ]) Result.result       val pp_error : Format.formatter -> [ `Unix of Unix.error ] -> unit       val open_error :         'a result -> ('a, [> `Unix of Unix.error ]) Result.result       val error_to_msg : 'a result -> ('a, [> Rresult.R.msg ]) Result.result       val call : ('-> 'b) -> '-> 'b result       val mkdir : Fpath.t -> Unix.file_perm -> unit result       val link : Fpath.t -> Fpath.t -> unit result       val unlink : Fpath.t -> unit result       val rename : Fpath.t -> Fpath.t -> unit result       val stat : Fpath.t -> Unix.stats result       val lstat : Fpath.t -> Unix.stats result       val truncate : Fpath.t -> int -> unit result     end end