Expose reference_name_to_id

This commit is contained in:
Carlos Martín Nieto
2013-04-02 07:30:02 +02:00
parent 7de2b5f4b6
commit 011068f51c
2 changed files with 12 additions and 5 deletions

View File

@@ -211,15 +211,13 @@ geef_reference_to_id(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
memcpy(name, bin.data, bin.size); memcpy(name, bin.data, bin.size);
name[bin.size] = '\0'; name[bin.size] = '\0';
if (git_reference_name_to_id(&id, repo->repo, name) < 0) { if (git_reference_name_to_id(&id, repo->repo, name) < 0)
enif_release_binary(&bin);
return geef_error(env); return geef_error(env);
}
if (geef_oid_bin(&bin, &id) < 0) if (geef_oid_bin(&bin, &id) < 0)
return atoms.error; return atoms.error;
return enif_make_binary(env, &bin); return enif_make_tuple2(env, atoms.ok, enif_make_binary(env, &bin));
} }
ERL_NIF_TERM ERL_NIF_TERM

View File

@@ -1,6 +1,6 @@
-module(geef_ref). -module(geef_ref).
-export([lookup/2, resolve/1, target/1]). -export([lookup/2, resolve/1, target/1, name_to_id/2]).
-include("geef_records.hrl"). -include("geef_records.hrl").
@@ -33,3 +33,12 @@ target(#ref{handle=Handle,type=symbolic}) ->
target(#ref{handle=Handle,type=oid}) -> target(#ref{handle=Handle,type=oid}) ->
Oid = geef:reference_target(Handle), Oid = geef:reference_target(Handle),
#oid{oid=Oid}. #oid{oid=Oid}.
-spec name_to_id(repo(), iolist()) -> {ok, oid()} | {error, binary()}.
name_to_id(#repo{handle=Handle}, Name) ->
case geef:reference_to_id(Handle, Name) of
{ok, Oid} ->
{ok, #oid{oid=Oid}};
Other ->
Other
end.