Expose reference_name_to_id
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user