Module Bos_os_arg

val quote : (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a -> unit
val err_done : string
val err_no_name : string
val err_env : string -> string -> [> Rresult.R.msg ]
val err_repeat : string -> [> Rresult.R.msg ]
val err_need_argument : string -> [> Rresult.R.msg ]
val err_dupe : string -> string -> [> Rresult.R.msg ]
val err_unknown_opt : Format.formatter -> string -> unit
val err_too_many : Format.formatter -> string list -> unit
val exec : string
type 'a conv = {
  1. parse : string -> ('a, Rresult.R.msg) Rresult.result;
  2. print : Format.formatter -> 'a -> unit;
  3. docv : string;
}
val conv : ?docv:string -> (string -> ('a, Rresult.R.msg) Rresult.result) -> (Format.formatter -> 'a -> unit) -> 'a conv
val conv_parser : 'a conv -> string -> ('a, Rresult.R.msg) Rresult.result
val conv_printer : 'a conv -> Format.formatter -> 'a -> unit
val conv_docv : 'a conv -> string
val conv_with_docv : 'a conv -> docv:string -> 'a conv
val err_invalid : string -> string -> [> Rresult.R.msg ]
val parser_of_kind_of_string : kind:string -> (string -> 'a option) -> string -> ('a, [> Rresult.R.msg ]) Rresult.result
val some : ?none:string -> 'a conv -> 'a option conv
type parse =
  1. | Done
  2. | Perror of Rresult.R.msg
  3. | Line of string list
val raw_args : string list
val get_parse : unit -> parse
val set_parse : parse -> unit
val make_opt_names : string list -> string list
val is_short_opt : string -> bool
val is_long_opt : string -> bool
val is_opt : string -> bool
val short_opt_arg : string -> (string * string) option
val long_opt_arg : string -> (string * string) option
val opt_arg : string -> (string * string) option
val opt_name_compare : string -> string -> int
val partition_opt_pos : string list -> string list * string list
val undocumented : string
type doc_opt_kind =
  1. | Flag of string
  2. | Opt of string * string * unit Fmt.t
type opt_doc = {
  1. names : string list;
  2. env : string option;
  3. repeat : bool;
  4. kind : doc_opt_kind;
}
val get_opt_docs : unit -> opt_doc list
val add_opt_doc : opt_doc -> unit
val pp_opt_doc : Format.formatter -> doc_opt_kind -> unit
val pp_opt_docs : Format.formatter -> opt_doc list -> unit
val env_default : string option -> (string -> ('a, [< `Msg of string ]) Rresult.result) -> ('a option, [> Rresult.R.msg ]) Rresult.result
val rem_flag : string list -> string list -> string list -> (string * string list) option
val flag : ?doc:string -> ?env:string -> string list -> bool
val flag_all : ?doc:string -> ?env:string -> string list -> int
val rem_option : string list -> string list -> string list -> ((string * string * string list) option, [> Rresult.R.msg ]) Rresult.result
val opt : ?docv:string -> ?doc:string -> ?env:string -> string list -> 'a conv -> absent:'a -> 'a
val opt_all : ?docv:string -> ?doc:string -> ?env:string -> string list -> 'a conv -> absent:'a list -> 'a list
val get_pp_usage : pos:bool -> string option -> unit Fmt.t
val pp_usage : Format.formatter -> (Format.formatter -> unit -> unit) -> unit
val pp_usage_try_help : Format.formatter -> (Format.formatter -> unit -> unit) -> unit
val parse_error : usage:(Format.formatter -> unit -> unit) -> string -> 'a
val maybe_help : doc:string -> usage:(Format.formatter -> unit -> unit) -> unit
val parse_opts : ?doc:string -> ?usage:string -> unit -> unit
val parse_pos_args : ('a -> ('b, 'c) Rresult.result) -> 'a list -> ('b list, 'c) Rresult.result
val parse : ?doc:string -> ?usage:string -> pos:'a conv -> unit -> 'a list
val kconv : ?docv:string -> kind:string -> (string -> 'a option) -> (Format.formatter -> 'a -> unit) -> 'a conv
val string : string conv
val path : Fpath.t conv
val bin : string list conv
val cmd : string list 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 parse_split : ?sep:string -> string -> (string -> ('a, 'b) Rresult.result) -> ('a list, 'b) Rresult.result
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