diff --git a/c_src/geef.c b/c_src/geef.c index d2c1629..b5d123e 100644 --- a/c_src/geef.c +++ b/c_src/geef.c @@ -50,10 +50,27 @@ geef_object_exists(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) return enif_make_atom(env, "false"); } +static ERL_NIF_TERM +geef_libgit2_version(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) +{ + int major = 0; + int minor = 0; + int rev = 0; + + git_libgit2_version(&major, &minor, &rev); + + ERL_NIF_TERM emajor = enif_make_int(env, major); + ERL_NIF_TERM eminor = enif_make_int(env, minor); + ERL_NIF_TERM erev = enif_make_int(env, rev); + + return enif_make_list3(env, emajor, eminor, erev); +} + static ErlNifFunc geef_funcs[] = { {"hex_to_raw", 1, geef_hex_to_raw}, - {"object_exists", 2, geef_object_exists} + {"object_exists", 2, geef_object_exists}, + {"libgit2_version", 0, geef_libgit2_version} }; ERL_NIF_INIT(geef, geef_funcs, NULL, NULL, NULL, NULL) diff --git a/geef b/geef index dfa2057..84f909b 100755 --- a/geef +++ b/geef @@ -14,6 +14,9 @@ main([Command|_Args]) -> [Object|_None] = _Rest, Exists = geef:object_exists(Path, Object), io:format("Exists: ~w~n", [Exists]); + "libgit2_version" -> + Version = geef:libgit2_version(), + io:format("libgit2 version: ~B.~B.~B~n", Version); _Else -> usage() end; diff --git a/src/geef.erl b/src/geef.erl index 7335c47..30ef535 100644 --- a/src/geef.erl +++ b/src/geef.erl @@ -1,5 +1,5 @@ -module(geef). --export([start/0, hex_to_raw/1, object_exists/2]). +-export([start/0, hex_to_raw/1, object_exists/2, libgit2_version/0]). start() -> case code:priv_dir(geef) of @@ -14,6 +14,9 @@ start() -> hex_to_raw(_Val) -> nif_error(?LINE). +libgit2_version() -> + nif_error(?LINE). + object_exists(_Val, _Val2) -> nif_error(?LINE).