diff --git a/unikernel/unikernel.ml b/unikernel/unikernel.ml index 1f2694d1..3e2d5206 100644 --- a/unikernel/unikernel.ml +++ b/unikernel/unikernel.ml @@ -32,6 +32,23 @@ let always x _ = x let map_err_to_string pp_err res = Lwt.map (R.reword_error (R.msgf "%a" pp_err)) res +let list_get_ok l = + let err = ref None in + try + l + |> List.map (function + | Error _e as e -> + err := Some e; + raise Exit + | Ok v -> v) + |> Result.ok + with Exit -> ( match !err with None -> assert false | Some v -> v) + +let lwt_list_get_ok l = + let open Lwt.Syntax in + let+ l = l in + list_get_ok l + module Make (Assets_ro : Mirage_kv.RO) (Certificates_ro : Mirage_kv.RO) @@ -40,8 +57,6 @@ module Make (Connect : Connect.S) (HTTP_server : Paf_mirage.S) = struct - (* WIP - read directories *) module Assets = struct let ( let*? ) = Lwt_result.bind let ( let+? ) x f = Lwt_result.map f x @@ -61,23 +76,6 @@ struct |> Option.to_result ~none:(`Msg (Fmt.str "missing `%s` directory" name)) |> Lwt_result.lift - let list_get_ok l = - let err = ref None in - try - l - |> List.map (function - | Error _e as e -> - err := Some e; - raise Exit - | Ok v -> v) - |> Result.ok - with Exit -> ( match !err with None -> assert false | Some v -> v) - - let lwt_list_get_ok l = - let open Lwt.Syntax in - let+ l = l in - list_get_ok l - let get ro s = let*? base_dir = get_subdirs ro Mirage_kv.Key.empty in let*? dir = find base_dir s in