Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
store_spec.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
(** Configuration information to set up a store. *) open Lwt.Infix type t = [ | `Btrfs of string (* Path *) | `Zfs of string (* Pool *) ] let of_string s = match Astring.String.cut s ~sep:":" with | Some ("zfs", pool) -> Ok (`Zfs pool) | Some ("btrfs", path) -> Ok (`Btrfs path) | _ -> Error (`Msg "Store must start with zfs: or btrfs:") let pp f = function | `Zfs pool -> Fmt.pf f "zfs:%s" pool | `Btrfs path -> Fmt.pf f "btrfs:%s" path type store = Store : (module S.STORE with type t = 'a) * 'a -> store let to_store = function | `Btrfs path -> Btrfs_store.create path >|= fun store -> Store ((module Btrfs_store), store) | `Zfs pool -> Zfs_store.create ~pool >|= fun store -> Store ((module Zfs_store), store)