diff --git a/src/geef_odb.erl b/src/geef_odb.erl index 4d80c64..fa6d8dd 100644 --- a/src/geef_odb.erl +++ b/src/geef_odb.erl @@ -3,5 +3,6 @@ -include("geef_records.hlr"). +-spec exists(odb(), string()) -> boolean(). exists(#odb{handle=Handle}, Sha) -> geef:odb_object_exists(Handle, Sha). diff --git a/src/geef_records.hlr b/src/geef_records.hlr index f462633..2d033f4 100644 --- a/src/geef_records.hlr +++ b/src/geef_records.hlr @@ -2,4 +2,6 @@ -record(repo, {handle}). -record(odb, {handle}). --type repo() :: repo. +-type ref() :: #ref{}. +-type repo() :: #repo{}. +-type odb() :: #odb{}. diff --git a/src/geef_ref.erl b/src/geef_ref.erl index 14d85a5..bf67a45 100644 --- a/src/geef_ref.erl +++ b/src/geef_ref.erl @@ -4,11 +4,12 @@ -include("geef_records.hlr"). +-spec new(term()) -> ref(). new(Handle) -> Type = geef:reference_type(Handle), #ref{handle=Handle, type=Type}. --spec lookup(term(), iolist()) -> term(). +-spec lookup(repo(), iolist()) -> {ok, ref()} | {error, term()}. lookup(#repo{handle=Handle}, Refname) -> case geef:reference_lookup(Handle, Refname) of {ok, Ref} -> @@ -17,6 +18,7 @@ lookup(#repo{handle=Handle}, Refname) -> Other end. +-spec resolve(ref()) -> {ok, ref()} | {error, term()}. resolve(#ref{handle=Handle}) -> case geef:reference_resolve(Handle) of {ok, Ref} -> @@ -25,6 +27,6 @@ resolve(#ref{handle=Handle}) -> Other end. --spec target(term()) -> binary(). +-spec target(ref()) -> binary(). target(#ref{handle=Handle, type=oid}) -> geef:reference_target(Handle). diff --git a/src/geef_repo.erl b/src/geef_repo.erl index 2315b1d..9dda368 100644 --- a/src/geef_repo.erl +++ b/src/geef_repo.erl @@ -4,19 +4,23 @@ -include("geef_records.hlr"). +-spec path(repo()) -> binary(). path(#repo{handle=Handle}) -> geef:repository_get_path(Handle). +-spec workdir(repo()) -> binary(). workdir(#repo{handle=Handle}) -> geef:repository_get_workdir(Handle). +-spec is_bare(repo()) -> boolean(). is_bare(#repo{handle=Handle}) -> geef:repository_is_bare(Handle). +-spec references(repo()) -> [binary()]. references(#repo{handle=Handle}) -> geef:reference_list(Handle). --spec open(iolist()) -> {ok, term()} | {error, term()}. +-spec open(iolist()) -> {ok, repo()} | {error, term()}. open(Path) -> case geef:repository_open(Path) of {ok, Handle} ->