type metadata =
| Dependency of string (* baseuri without trailing slash *)
- | Baseuri of string
let eq_metadata (m1:metadata) (m2:metadata) = m1 = m2
*)
let save_metadata ~fname metadata =
- let oc = open_out fname in
- let marshalled = Marshal.to_string metadata marshal_flags in
- let checksum = Hashtbl.hash marshalled in
- output_binary_int oc magic;
- output_binary_int oc checksum;
- output_string oc marshalled;
- close_out oc
+ let ensure_path_exists path =
+ let dir = Filename.dirname path in
+ HExtlib.mkdir dir
+ in
+ ensure_path_exists fname;
+ let oc = open_out fname in
+ let marshalled = Marshal.to_string metadata marshal_flags in
+ let checksum = Hashtbl.hash marshalled in
+ output_binary_int oc magic;
+ output_binary_int oc checksum;
+ output_string oc marshalled;
+ close_out oc
let load_metadata ~fname =
let ic = open_in fname in