diff --git a/lib/geef.ex b/lib/geef.ex new file mode 100644 index 0000000..f2501e0 --- /dev/null +++ b/lib/geef.ex @@ -0,0 +1,15 @@ +defmodule Geef do + + defmacro __using__(_) do + quote do + alias Geef.Repository + alias Geef.Reference + alias Geef.Object + alias Geef.Commit + alias Geef.Tree + alias Geef.Blob + alias Geef.Tag + end + end + +end diff --git a/lib/geef/blob.ex b/lib/geef/blob.ex new file mode 100644 index 0000000..beb73dd --- /dev/null +++ b/lib/geef/blob.ex @@ -0,0 +1,21 @@ +defmodule Geef.Blob do + alias Geef.Object + + def lookup(repo, id) do + case :geef_obj.lookup(repo, id) do + {:ok, obj} -> + {:ok, Object.new obj} + error -> + error + end + end + + def size(obj = Object[type: :blob]) do + :geef_blob.size(set_elem(obj, 0, :geef_object)) + end + + def content(obj = Object[type: :blob]) do + :geef_blob.content(set_elem(obj, 0, :geef_object)) + end + +end diff --git a/lib/geef/commit.ex b/lib/geef/commit.ex new file mode 100644 index 0000000..de3f005 --- /dev/null +++ b/lib/geef/commit.ex @@ -0,0 +1,17 @@ +defmodule Geef.Commit do + alias Geef.Object + + def lookup(repo, id) do + case :geef_commit.lookup(repo, id) do + {:ok, commit} -> + {:ok, Object.new commit} + error -> + error + end + end + + def tree_id(commit = Object[type: :commit]) do + :geef_commit.tree_id(set_elem(commit, 0, :geef_object)) + end + +end diff --git a/lib/geef/odb.ex b/lib/geef/odb.ex index 264ee7a..79f63d0 100644 --- a/lib/geef/odb.ex +++ b/lib/geef/odb.ex @@ -3,5 +3,7 @@ defmodule Geef.Odb do :geef_odb.exists(pid, id) end + def write(pid, content, type), do: :geef_odb.write(pid, content, type) + def stop(pid), do: :geef_odb.stop(pid) end diff --git a/lib/geef/tree.ex b/lib/geef/tree.ex new file mode 100644 index 0000000..f26ce87 --- /dev/null +++ b/lib/geef/tree.ex @@ -0,0 +1,17 @@ +defmodule Geef.Tree do + alias Geef.Object + + def lookup(repo, id) do + case :geef_tree.lookup(repo, id) do + {:ok, obj} -> + {:ok, Object.new obj} + error -> + error + end + end + + def get(tree = Object[type: :tree], path) do + :geef_tree.get(set_elem(tree, 0, :geef_object), path) + end + +end diff --git a/src/geef_blob.erl b/src/geef_blob.erl index b0c7798..16a4af4 100644 --- a/src/geef_blob.erl +++ b/src/geef_blob.erl @@ -6,16 +6,12 @@ -include("geef_records.hrl"). --export([lookup/2, id/1, size/1, content/1]). +-export([lookup/2, size/1, content/1]). -spec lookup(pid(), geef_oid() | iolist()) -> geef_object(). lookup(Repo, Id) -> geef_obj:lookup(Repo, Id, blob). --spec id(geef_object()) -> geef_oid(). -id(Obj = #geef_object{type=blob}) -> - geef_obj:id(Obj). - size(#geef_object{type=blob, handle=Handle}) -> geef_nif:blob_size(Handle). diff --git a/src/geef_commit.erl b/src/geef_commit.erl index db97c49..be6a69b 100644 --- a/src/geef_commit.erl +++ b/src/geef_commit.erl @@ -1,5 +1,5 @@ -module(geef_commit). --export([tree_id/1, tree/1, id/1, lookup/2]). +-export([tree_id/1, tree/1, lookup/2]). -include("geef_records.hrl"). @@ -18,7 +18,4 @@ tree(#geef_object{type=commit,handle=Handle}) -> -spec lookup(pid(), geef_oid() | iolist()) -> geef_object(). lookup(Repo, Id) -> - geef_object:lookup(Repo, Id, commit). - -id(Obj = #geef_object{type=commit}) -> - geef_object:id(Obj). + geef_obj:lookup(Repo, Id, commit). diff --git a/src/geef_tree.erl b/src/geef_tree.erl index 32e72fc..7da9bb4 100644 --- a/src/geef_tree.erl +++ b/src/geef_tree.erl @@ -4,7 +4,7 @@ -include_lib("eunit/include/eunit.hrl"). -endif. --export([get/2, id/1, lookup/2]). +-export([get/2, lookup/2]). -include("geef_records.hrl"). @@ -17,10 +17,6 @@ get(#geef_object{type=tree,handle=Handle}, Path) -> Other end. --spec id(geef_object()) -> {ok, geef_oid()} | {error, term()}. -id(Obj = #geef_object{type=tree}) -> - geef_object:id(Obj). - -spec lookup(pid(), geef_oid() | iolist()) -> {ok, geef_object()} | {error, term()}. lookup(Repo, Id) -> geef_obj:lookup(Repo, Id, tree).