aboutsummaryrefslogblamecommitdiffstats
path: root/lib/Scratch.ml
blob: 0779db3889dad03b73f888a8532d5eb449fcf1a6 (plain) (tree)






















                                                                                              
module LMDB = Backend.Storage.LMDB
module I = Kernel.Initialization.Make (LMDB)

let rec remove path =
  if Sys.is_directory path then begin
    Array.iter (fun name -> remove (Filename.concat path name)) (Sys.readdir path);
    Sys.rmdir path
  end
  else Sys.remove path

let root ?(evaluators = ["fol", Evaluators.FOL.make ()]) () =
  let open Utilities.Result in
  let directory = Filename.temp_dir "rnt-scratch" "" in
  let* connection =
    Sexplib.Sexp.(
      List [Atom "lmdb"; List [Atom "path"; Atom directory]; List [Atom "mode"; Atom "420"]] )
    |> Concepts.Configuration.term_of_sexp
    |> LMDB.connect
  in
  at_exit (fun () ->
      LMDB.disconnect connection;
      try remove directory with Sys_error _ -> () );
  I.initialize ~evaluators connection