From 945583ff43e6025cc323e87cee5a6304ce26118b Mon Sep 17 00:00:00 2001 From: Jeremie Dimino Date: Thu, 1 Mar 2018 20:16:46 +0000 Subject: [PATCH] Add Arg_spec.of_result{,_map} --- src/arg_spec.ml | 9 +++++++++ src/arg_spec.mli | 3 +++ 2 files changed, 12 insertions(+) diff --git a/src/arg_spec.ml b/src/arg_spec.ml index cd5ff93b..87fc4fe2 100644 --- a/src/arg_spec.ml +++ b/src/arg_spec.ml @@ -71,3 +71,12 @@ let quote_args = | arg :: args -> quote :: arg :: loop quote args in fun quote args -> As (loop quote args) + +let of_result = function + | Ok x -> x + | Error e -> Dyn (fun _ -> raise e) + +let of_result_map res ~f = + match res with + | Ok x -> f x + | Error e -> Dyn (fun _ -> raise e) diff --git a/src/arg_spec.mli b/src/arg_spec.mli index 120ed502..1c2ce11a 100644 --- a/src/arg_spec.mli +++ b/src/arg_spec.mli @@ -46,3 +46,6 @@ val expand : dir:Path.t -> 'a t list -> 'a -> string list * Path.Set.t (** [quote_args quote args] is [As \[quote; arg1; quote; arg2; ...\]] *) val quote_args : string -> string list -> _ t + +val of_result : ('a t, exn) result -> 'a t +val of_result_map : ('a, exn) result -> f:('a -> 'b t) -> 'b t