From a8078fba691ce76936ff5a6787ad958f9e41de40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 26 Oct 2013 02:44:05 +0200 Subject: [PATCH] Commit: grab the tree --- lib/geef/commit.ex | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/geef/commit.ex b/lib/geef/commit.ex index 054baa2..fafab41 100644 --- a/lib/geef/commit.ex +++ b/lib/geef/commit.ex @@ -2,6 +2,8 @@ defmodule Geef.Commit do alias Geef.Object import Object, only: :macros + @type t :: Object[type: :commit] + def lookup(repo, id) do case :geef_commit.lookup(repo, id) do {:ok, commit} -> @@ -11,8 +13,22 @@ defmodule Geef.Commit do end end + @spec tree_id(Object.t) :: Oid.t def tree_id(commit = Object[type: :commit]) do :geef_commit.tree_id(rebind(commit)) end + @spec tree(t) :: {:ok, Tree.t} | {:error, any} + def tree(commit = Object[type: :commit]) do + case :geef_commit.tree(rebind(commit)) do + {:ok, tree} -> + {:ok, Object.from_erl(tree)} + error = {:error, _} -> + error + end + end + + @spec tree!(t) :: Tree.t + def tree!(commit = Object[type: :commit]), do: tree(commit) |> Geef.assert_ok + end