Examples
Below is a simple example of setting a key and getting the value out of a Git based, filesystem-backed store.
open Lwt.Infix (* Irmin store with string contents *) module Store = Irmin_unix.Git.FS.KV(Irmin.Contents.String) (* Database configuration *) let config = Irmin_git.config ~bare:true "/tmp/irmin/test" (* Commit author *) let author = "Example " (* Commit information *) let info fmt = Irmin_unix.info ~author fmt let main = (* Open the repo *) Store.Repo.v config >>= (* Load the master branch *) Store.master >>= fun t -> (* Set key "foo/bar" to "testing 123" *) Store.set_exn t ~info:(info "Updating foo/bar") ["foo"; "bar"] "testing 123" >>= fun () -> (* Get key "foo/bar" and print it to stdout *) Store.get t ["foo"; "bar"] >|= fun x -> Printf.printf "foo/bar => '%s'\n" x (* Run the program *) let () = Lwt_main.run main
To compile the example above, save it to a file called example.mland run:
$ ocamlfind ocamlopt example.ml -o example -package irmin-unix,lwt.unix -linkpkg $ ./example foo/bar => 'testing 123'
The examples directory contains some more advanced examples. The build them, run:
$ dune build examples/trees.exe $ _build/default/examples/trees.exe
Command-line
The same thing can also be accomplished using irmin, the command-line application installed with irmin-unix, by running:
$ echo "root: ." > irmin.yml $ irmin init $ irmin set foo/bar "testing 123" $ irmin get foo/bar
irmin.yml allows for irmin flags to be set on a per-directory basis. You can also set flags globally using $HOME/.irmin/config.yml.
Run irmin help irmin.yml for further details.
Explore further
Irmin is part of the MirageOS project and is supported by Tarides, Robur and OCaml Labs.
from Hacker News https://irmin.org/
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.