scarab 


content-addressable file storage for elixir
Installation
Scarab is available in Hex and can be installed as:
Add concerto your list of dependencies in
mix.exs:def deps do
[{:scarab, "~> 0.1.0"}]end
Usage
Start by defining a repo:
defmodule My.Repo do
use Scarab, backend: Scarab.Backend.FS,
config: %{path: ".repo"}
endAvailable backends include:
Now we can put and get contents:
{:ok, hash} = My.Repo.put("Hello, world!")
IO.inspect hash
## ":lDpwLQbzRZmu4fjajvn3KWAx1pk"
{:ok, "Hello, world!"} = My.Repo.get(hash)We can also add namespaced links for easy lookup:
{:ok, hash} = My.Repo.put("Hello, links!")
:ok = My.Repo.link("my-namespace", "my-link", hash)
My.Repo.resolve("my-namespace", "my-link") |> IO.inspect
## {:ok, "Hello, links!"}
My.Repo.unlink("my-namespace", "my-link")
My.Repo.resolve("my-namespace", "my-link") |> IO.inspect
## {:error, :enoent}