From ff2b86852678faa01e5dc8b3bce7b6b253aeb00b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 21 Jan 2013 12:02:11 +0100 Subject: [PATCH] Parametrize odb --- ebin/geef.app | 2 +- src/geef.erl | 14 ++++---------- src/odb.erl | 5 +++++ src/repository.erl | 8 ++++++++ 4 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 src/odb.erl diff --git a/ebin/geef.app b/ebin/geef.app index abc7a64..999ac22 100644 --- a/ebin/geef.app +++ b/ebin/geef.app @@ -3,7 +3,7 @@ {description, ""}, {vsn, "0.0.1"}, {modules, [ - geef, repository + geef, repository, odb ]}, {registered, []}, {applications, [ diff --git a/src/geef.erl b/src/geef.erl index 7d8617e..a3d386d 100644 --- a/src/geef.erl +++ b/src/geef.erl @@ -1,7 +1,8 @@ -module(geef). --export([hex_to_raw/1, repository/1, repository_get_path/1, repository_odb/1, - odb_exists/2, repository_init/2, repository_is_bare/1, repository_get_workdir/1, reference_list/1, - reference_to_id/2, reference_glob/2, reference_lookup/2, reference_resolve/1]). +-export([hex_to_raw/1, repository/1, repository_get_path/1, repository_get_odb/1, + repository_init/2, repository_is_bare/1, repository_get_workdir/1, reference_list/1, + reference_to_id/2, reference_glob/2, reference_lookup/2, reference_resolve/1, + odb_object_exists/2]). -on_load(load_enif/0). hex_to_raw(_Val) -> @@ -47,16 +48,9 @@ repository(Path) -> other -> other end. -repository_odb({repository, Handle}) -> - {ok, Odb} = repository_get_odb(Handle), - {ok, {odb, Odb}}. - odb_object_exists(_Val, _Val) -> nif_error(?LINE). -odb_exists({odb, Handle}, Sha) -> - odb_object_exists(Handle, Sha). - nif_error(Line) -> exit({nif_not_loaded,module,?MODULE,line,Line}). diff --git a/src/odb.erl b/src/odb.erl new file mode 100644 index 0000000..08bada6 --- /dev/null +++ b/src/odb.erl @@ -0,0 +1,5 @@ +-module(odb, [Handle]). +-export([exists/1]). + +exists(Sha) -> + geef:odb_object_exists(Handle, Sha). diff --git a/src/repository.erl b/src/repository.erl index f7f85e3..e977d2d 100644 --- a/src/repository.erl +++ b/src/repository.erl @@ -12,3 +12,11 @@ bare() -> references() -> geef:reference_list(Handle). + +odb() -> + case geef:repository_get_odb(Handle) of + {ok, Odb} -> + odb:new(Odb); + other -> + other + end.