@@ -808,13 +808,14 @@ let package_version =
808808
809809let positive_integer : int Arg.conv =
810810 let parser = Arg. conv_parser Arg. int in
811+ let printer = Arg. conv_printer Arg. int in
811812 let parser s =
812813 match parser s with
813814 | Error _ -> Error " expected a strictly positive integer"
814815 | Ok n as r -> if n < = 0
815816 then Error " expected a positive integer"
816817 else r in
817- Arg. conv' (parser, Arg. conv_printer Arg. int )
818+ Arg. conv' (parser, printer )
818819
819820(* name * version option *)
820821let package =
@@ -873,8 +874,8 @@ let atom_or_local =
873874 Ok (`Dirname (OpamFilename.Dir. of_string str))
874875 else
875876 Error (Printf. sprintf
876- " Not a valid package specification or existing file or \
877- directory: %s" str)
877+ " Not a valid package specification or existing file or \
878+ directory: %s" str)
878879 else match Arg. conv_parser atom str with
879880 | Ok at -> Ok (`Atom at)
880881 | Error (`Msg e ) -> Error e
@@ -890,14 +891,15 @@ let atom_or_dir =
890891 let parse str = match Arg. conv_parser atom_or_local str with
891892 | Ok (`Filename _ ) ->
892893 Error (Printf. sprintf
893- " Not a valid package specification or existing directory: %s"
894- str)
894+ " Not a valid package specification or existing directory: %s"
895+ str)
895896 | Ok (`Atom _ | `Dirname _ as atom_or_dir ) -> Ok (atom_or_dir)
896897 | Error (`Msg e ) -> Error e
897898 in
898- let print ppf = function
899- | `Dirname d -> pr_str ppf (OpamFilename.Dir. to_string d)
900- | `Atom a -> Arg. conv_printer atom ppf a in
899+ let print ppf
900+ :> [ `Atom of OpamTypes. atom | `Dirname of OpamTypes. dirname ] -> unit
901+ = Arg. conv_printer atom_or_local ppf
902+ in
901903 Arg. conv' (parse, print)
902904
903905let dep_formula =
@@ -1003,6 +1005,16 @@ let _selector =
10031005 in
10041006 Arg. conv' (parse, print)
10051007
1008+ (* unused
1009+ let enum_with_default sl: 'a Arg.converter =
1010+ let parse, print = Arg.enum sl in
1011+ let parse s =
1012+ match parse s with
1013+ | `Ok _ as x -> x
1014+ | _ -> `Ok (`default s) in
1015+ parse, print
1016+ *)
1017+
10061018let opamlist_column =
10071019 let parse str =
10081020 if OpamCompat.String. ends_with ~suffix: " :" str then
@@ -1016,9 +1028,9 @@ let opamlist_column =
10161028 |> fun (f , _ ) -> Ok f
10171029 with Not_found ->
10181030 Error (Printf. sprintf
1019- " No known printer for column %s. If you meant an opam file \
1020- field, use '%s:' instead (with a trailing colon)."
1021- str str)
1031+ " No known printer for column %s. If you meant an opam file \
1032+ field, use '%s:' instead (with a trailing colon)."
1033+ str str)
10221034 in
10231035 let print ppf field =
10241036 Format. pp_print_string ppf (OpamListCommand. string_of_field field)
@@ -1058,7 +1070,9 @@ let opamlist_columns =
10581070 let print ppf cols =
10591071 let rec aux = function
10601072 | x ::(_ ::_ ) as r ->
1061- Arg. conv_printer opamlist_column ppf x; Format. pp_print_char ppf ',' ; aux r
1073+ Arg. conv_printer opamlist_column ppf x;
1074+ Format. pp_print_char ppf ',' ;
1075+ aux r
10621076 | [x] -> Arg. conv_printer opamlist_column ppf x
10631077 | [] -> ()
10641078 in
@@ -1668,26 +1682,21 @@ let package_selection cli =
16681682 Arg. (pair ~sep: ':' string string )
16691683 in
16701684 let has_flag =
1671- let flag_arg =
1672- let parser s =
1673- match pkg_flag_of_string s with
1674- | Pkgflag_Unknown s ->
1675- Error (" Invalid package flag " ^ s^ " , must be one of " ^
1676- OpamStd.List. concat_map " " string_of_pkg_flag
1677- all_package_flags)
1678- | f -> Ok f in
1679- let printer fmt flag =
1680- Format. pp_print_string fmt (string_of_pkg_flag flag)
1681- in
1682- Arg. conv' (parser, printer)
1683- in
16841685 mk_opt_all ~cli cli_original [" has-flag" ] " FLAG" ~section
16851686 (" Only include packages which have the given flag set. \
16861687 Package flags are one of: " ^
16871688 (OpamStd.List. concat_map " "
16881689 (Printf. sprintf " $(b,%s)" @* string_of_pkg_flag)
16891690 all_package_flags))
1690- flag_arg
1691+ (Arg. conv'
1692+ ((fun s -> match pkg_flag_of_string s with
1693+ | Pkgflag_Unknown s ->
1694+ Error (" Invalid package flag " ^ s^ " , must be one of " ^
1695+ OpamStd.List. concat_map " " string_of_pkg_flag
1696+ all_package_flags)
1697+ | f -> Ok f),
1698+ (fun fmt flag ->
1699+ Format. pp_print_string fmt (string_of_pkg_flag flag))))
16911700 in
16921701 let has_tag =
16931702 mk_opt_all ~cli cli_original [" has-tag" ] " TAG" ~section
0 commit comments