More complete ref bindings
This commit is contained in:
@@ -55,7 +55,7 @@ geef_reference_lookup(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
|
|||||||
if (!enif_get_resource(env, argv[0], geef_repository_type, (void **) &repo))
|
if (!enif_get_resource(env, argv[0], geef_repository_type, (void **) &repo))
|
||||||
return enif_make_badarg(env);
|
return enif_make_badarg(env);
|
||||||
|
|
||||||
if (!enif_inspect_binary(env, argv[1], &bin))
|
if (!enif_inspect_iolist_as_binary(env, argv[1], &bin))
|
||||||
return enif_make_badarg(env);
|
return enif_make_badarg(env);
|
||||||
|
|
||||||
name = malloc(bin.size + 1);
|
name = malloc(bin.size + 1);
|
||||||
|
|||||||
@@ -4,9 +4,10 @@
|
|||||||
{vsn, "0.0.1"},
|
{vsn, "0.0.1"},
|
||||||
{modules, [
|
{modules, [
|
||||||
geef,
|
geef,
|
||||||
repository,
|
geef_repo,
|
||||||
odb,
|
geef_odb,
|
||||||
reference
|
geef_ref,
|
||||||
|
geef_oid
|
||||||
]},
|
]},
|
||||||
{registered, []},
|
{registered, []},
|
||||||
{applications, [
|
{applications, [
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
-record(ref, {handle}).
|
-record(ref, {handle, type}).
|
||||||
-record(repo, {handle}).
|
-record(repo, {handle}).
|
||||||
-record(odb, {handle}).
|
-record(odb, {handle}).
|
||||||
|
|||||||
@@ -1,17 +1,30 @@
|
|||||||
-module(geef_ref).
|
-module(geef_ref).
|
||||||
|
|
||||||
-export([resolve/1, target/1]).
|
-export([lookup/2, resolve/1, target/1]).
|
||||||
|
|
||||||
-include("geef_records.hlr").
|
-include("geef_records.hlr").
|
||||||
|
|
||||||
|
new(Handle) ->
|
||||||
|
Type = geef:reference_type(Handle),
|
||||||
|
#ref{handle=Handle, type=Type}.
|
||||||
|
|
||||||
|
-spec lookup(term(), iolist()) -> term().
|
||||||
|
lookup(#repo{handle=Handle}, Refname) ->
|
||||||
|
case geef:reference_lookup(Handle, Refname) of
|
||||||
|
{ok, Ref} ->
|
||||||
|
{ok, new(Ref)};
|
||||||
|
Other ->
|
||||||
|
Other
|
||||||
|
end.
|
||||||
|
|
||||||
resolve(#ref{handle=Handle}) ->
|
resolve(#ref{handle=Handle}) ->
|
||||||
case geef:reference_resolve(Handle) of
|
case geef:reference_resolve(Handle) of
|
||||||
{ok, Ref} ->
|
{ok, Ref} ->
|
||||||
{ok, #ref{handle=Handle}};
|
{ok, new(Ref)};
|
||||||
Other ->
|
Other ->
|
||||||
Other
|
Other
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec target(term()) -> binary().
|
-spec target(term()) -> binary().
|
||||||
target(#ref{handle=Handle}) ->
|
target(#ref{handle=Handle, type=oid}) ->
|
||||||
geef:reference_target(Handle).
|
geef:reference_target(Handle).
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
-module(odb, [Handle]).
|
|
||||||
-export([exists/1]).
|
|
||||||
|
|
||||||
exists(Sha) ->
|
|
||||||
geef:odb_object_exists(Handle, Sha).
|
|
||||||
Reference in New Issue
Block a user