sig   module Pat :     sig       type t       val v : string -> Bos.Pat.t       val empty : Bos.Pat.t       val dom : Bos.Pat.t -> Astring.String.Set.t       val equal : Bos.Pat.t -> Bos.Pat.t -> bool       val compare : Bos.Pat.t -> Bos.Pat.t -> int       val of_string : string -> (Bos.Pat.t, [> Rresult.R.msg ]) Result.result       val to_string : Bos.Pat.t -> string       val pp : Format.formatter -> Bos.Pat.t -> unit       val dump : Format.formatter -> Bos.Pat.t -> unit       type defs = string Astring.String.Map.t       val subst :         ?undef:(string -> string option) ->         Bos.Pat.defs -> Bos.Pat.t -> Bos.Pat.t       val format :         ?undef:(string -> string) -> Bos.Pat.defs -> Bos.Pat.t -> string       val matches : Bos.Pat.t -> string -> bool       val query :         ?init:Bos.Pat.defs -> Bos.Pat.t -> string -> Bos.Pat.defs option     end   module Cmd :     sig       type t       val v : string -> Bos.Cmd.t       val empty : Bos.Cmd.t       val is_empty : Bos.Cmd.t -> bool       val ( % ) : Bos.Cmd.t -> string -> Bos.Cmd.t       val ( %% ) : Bos.Cmd.t -> Bos.Cmd.t -> Bos.Cmd.t       val add_arg : Bos.Cmd.t -> string -> Bos.Cmd.t       val add_args : Bos.Cmd.t -> Bos.Cmd.t -> Bos.Cmd.t       val on : bool -> Bos.Cmd.t -> Bos.Cmd.t       val p : Fpath.t -> string       val line_exec : Bos.Cmd.t -> string option       val get_line_exec : Bos.Cmd.t -> string       val line_args : Bos.Cmd.t -> string list       val equal : Bos.Cmd.t -> Bos.Cmd.t -> bool       val compare : Bos.Cmd.t -> Bos.Cmd.t -> int       val of_string : string -> (Bos.Cmd.t, Rresult.R.msg) Rresult.result       val to_string : Bos.Cmd.t -> string       val to_list : Bos.Cmd.t -> string list       val of_list : ?slip:string -> string list -> Bos.Cmd.t       val of_values : ?slip:string -> ('-> string) -> 'a list -> Bos.Cmd.t       val pp : Format.formatter -> Bos.Cmd.t -> unit       val dump : Format.formatter -> Bos.Cmd.t -> unit     end   module OS :     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 -> (Bos.OS.Env.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) -> 'Bos.OS.Env.parser           val bool : bool Bos.OS.Env.parser           val string : string Bos.OS.Env.parser           val path : Fpath.t Bos.OS.Env.parser           val cmd : Bos.Cmd.t Bos.OS.Env.parser           val some : 'Bos.OS.Env.parser -> 'a option Bos.OS.Env.parser           val parse :             string ->             'Bos.OS.Env.parser ->             absent:'-> ('a, [> Rresult.R.msg ]) Bos.OS.result           val value :             ?log:Logs.level ->             string -> 'Bos.OS.Env.parser -> absent:'-> 'a         end       module Arg :         sig           val exec : string           type 'a conv           val conv :             ?docv:string ->             (string -> ('a, Rresult.R.msg) Result.result) ->             (Format.formatter -> '-> unit) -> 'Bos.OS.Arg.conv           val conv_parser :             'Bos.OS.Arg.conv -> string -> ('a, Rresult.R.msg) Result.result           val conv_printer :             'Bos.OS.Arg.conv -> Format.formatter -> '-> unit           val conv_docv : 'Bos.OS.Arg.conv -> string           val parser_of_kind_of_string :             kind:string ->             (string -> 'a option) ->             string -> ('a, Rresult.R.msg) Result.result           val some :             ?none:string -> 'Bos.OS.Arg.conv -> 'a option Bos.OS.Arg.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 -> 'Bos.OS.Arg.conv -> absent:'-> 'a           val opt_all :             ?docv:string ->             ?doc:string ->             ?env:string ->             string list -> 'Bos.OS.Arg.conv -> absent:'a list -> 'a list           val parse_opts : ?doc:string -> ?usage:string -> unit -> unit           val parse :             ?doc:string ->             ?usage:string -> pos:'Bos.OS.Arg.conv -> unit -> 'a list           val string : string Bos.OS.Arg.conv           val path : Fpath.t Bos.OS.Arg.conv           val bin : Bos.Cmd.t Bos.OS.Arg.conv           val cmd : Bos.Cmd.t Bos.OS.Arg.conv           val char : char Bos.OS.Arg.conv           val bool : bool Bos.OS.Arg.conv           val int : int Bos.OS.Arg.conv           val nativeint : nativeint Bos.OS.Arg.conv           val int32 : int32 Bos.OS.Arg.conv           val int64 : int64 Bos.OS.Arg.conv           val float : float Bos.OS.Arg.conv           val enum : (string * 'a) list -> 'Bos.OS.Arg.conv           val list :             ?sep:string -> 'Bos.OS.Arg.conv -> 'a list Bos.OS.Arg.conv           val array :             ?sep:string -> 'Bos.OS.Arg.conv -> 'a array Bos.OS.Arg.conv           val pair :             ?sep:string ->             'Bos.OS.Arg.conv ->             'Bos.OS.Arg.conv -> ('a * 'b) Bos.OS.Arg.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 ->                 (Bos.OS.Path.Mode.t, [> Rresult.R.msg ]) Bos.OS.result               val set :                 Fpath.t ->                 Bos.OS.Path.Mode.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 -> 'Bos.OS.Path.fold_error           val fold :             ?err:'Bos.OS.Path.fold_error ->             ?dotfiles:bool ->             ?elements:Bos.OS.Path.elements ->             ?traverse:Bos.OS.Path.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 ->             (Bos.OS.File.input -> '-> 'b) ->             '-> ('b, [> Rresult.R.msg ]) Bos.OS.result           val with_ic :             Fpath.t ->             (Pervasives.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 ->             (Bos.OS.File.output -> '-> ('c, 'd) Result.result) ->             '-> (('c, 'd) Result.result, [> Rresult.R.msg ]) Bos.OS.result           val with_oc :             ?mode:int ->             Fpath.t ->             (Pervasives.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)             Pervasives.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)               Pervasives.format4           val tmp :             ?mode:int ->             ?dir:Fpath.t ->             Bos.OS.File.tmp_name_pat ->             (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result           val with_tmp_output :             ?mode:int ->             ?dir:Fpath.t ->             Bos.OS.File.tmp_name_pat ->             (Fpath.t -> Bos.OS.File.output -> '-> 'b) ->             '-> ('b, [> Rresult.R.msg ]) Bos.OS.result           val with_tmp_oc :             ?mode:int ->             ?dir:Fpath.t ->             Bos.OS.File.tmp_name_pat ->             (Fpath.t -> Pervasives.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)               Pervasives.format4           val tmp :             ?mode:int ->             ?dir:Fpath.t ->             Bos.OS.Dir.tmp_name_pat ->             (Fpath.t, [> Rresult.R.msg ]) Bos.OS.result           val with_tmp :             ?mode:int ->             ?dir:Fpath.t ->             Bos.OS.Dir.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 : Bos.OS.Cmd.status Fmt.t           type run_info           val run_info_cmd : Bos.OS.Cmd.run_info -> Bos.Cmd.t           type run_status = Bos.OS.Cmd.run_info * Bos.OS.Cmd.status           val success :             ('a * Bos.OS.Cmd.run_status, [> Rresult.R.msg ] as 'b)             Bos.OS.result -> ('a, 'b) Bos.OS.result           type run_err           val err_file : ?append:bool -> Fpath.t -> Bos.OS.Cmd.run_err           val err_null : Bos.OS.Cmd.run_err           val err_run_out : Bos.OS.Cmd.run_err           val err_stderr : Bos.OS.Cmd.run_err           type run_in           val in_string : string -> Bos.OS.Cmd.run_in           val in_file : Fpath.t -> Bos.OS.Cmd.run_in           val in_null : Bos.OS.Cmd.run_in           val in_stdin : Bos.OS.Cmd.run_in           type run_out           val out_string :             ?trim:bool ->             Bos.OS.Cmd.run_out ->             (string * Bos.OS.Cmd.run_status, [> Rresult.R.msg ])             Bos.OS.result           val out_lines :             ?trim:bool ->             Bos.OS.Cmd.run_out ->             (string list * Bos.OS.Cmd.run_status, [> Rresult.R.msg ])             Bos.OS.result           val out_file :             ?append:bool ->             Fpath.t ->             Bos.OS.Cmd.run_out ->             (unit * Bos.OS.Cmd.run_status, [> Rresult.R.msg ]) Bos.OS.result           val out_run_in :             Bos.OS.Cmd.run_out ->             (Bos.OS.Cmd.run_in, [> Rresult.R.msg ]) Bos.OS.result           val out_null :             Bos.OS.Cmd.run_out ->             (unit * Bos.OS.Cmd.run_status, [> Rresult.R.msg ]) Bos.OS.result           val out_stdout :             Bos.OS.Cmd.run_out ->             (unit * Bos.OS.Cmd.run_status, [> Rresult.R.msg ]) Bos.OS.result           val to_string :             ?trim:bool ->             Bos.OS.Cmd.run_out -> (string, [> Rresult.R.msg ]) Bos.OS.result           val to_lines :             ?trim:bool ->             Bos.OS.Cmd.run_out ->             (string list, [> Rresult.R.msg ]) Bos.OS.result           val to_file :             ?append:bool ->             Fpath.t ->             Bos.OS.Cmd.run_out -> (unit, [> Rresult.R.msg ]) Bos.OS.result           val to_null :             Bos.OS.Cmd.run_out -> (unit, [> Rresult.R.msg ]) Bos.OS.result           val to_stdout :             Bos.OS.Cmd.run_out -> (unit, [> Rresult.R.msg ]) Bos.OS.result           val run_io :             ?env:Bos.OS.Env.t ->             ?err:Bos.OS.Cmd.run_err ->             Bos.Cmd.t -> Bos.OS.Cmd.run_in -> Bos.OS.Cmd.run_out           val run_out :             ?env:Bos.OS.Env.t ->             ?err:Bos.OS.Cmd.run_err -> Bos.Cmd.t -> Bos.OS.Cmd.run_out           val run_in :             ?env:Bos.OS.Env.t ->             ?err:Bos.OS.Cmd.run_err ->             Bos.Cmd.t ->             Bos.OS.Cmd.run_in -> (unit, [> Rresult.R.msg ]) Bos.OS.result           val run :             ?env:Bos.OS.Env.t ->             ?err:Bos.OS.Cmd.run_err ->             Bos.Cmd.t -> (unit, [> Rresult.R.msg ]) Bos.OS.result           val run_status :             ?env:Bos.OS.Env.t ->             ?err:Bos.OS.Cmd.run_err ->             ?quiet:bool ->             Bos.Cmd.t ->             (Bos.OS.Cmd.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 :             'Bos.OS.U.result ->             ('a, [> `Unix of Unix.error ]) Result.result           val error_to_msg :             'Bos.OS.U.result -> ('a, [> Rresult.R.msg ]) Result.result           val call : ('-> 'b) -> '-> 'Bos.OS.U.result           val mkdir : Fpath.t -> Unix.file_perm -> unit Bos.OS.U.result           val link : Fpath.t -> Fpath.t -> unit Bos.OS.U.result           val unlink : Fpath.t -> unit Bos.OS.U.result           val rename : Fpath.t -> Fpath.t -> unit Bos.OS.U.result           val stat : Fpath.t -> Unix.stats Bos.OS.U.result           val lstat : Fpath.t -> Unix.stats Bos.OS.U.result           val truncate : Fpath.t -> int -> unit Bos.OS.U.result         end     end end