@@ -57,7 +57,7 @@ geef_config_set_bool(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
|
||||
ErlNifBinary bin;
|
||||
int error, val;
|
||||
ERL_NIF_TERM ret;
|
||||
|
||||
|
||||
ret = extract(&cfg, &bin, env, argv);
|
||||
if (ret != atoms.ok)
|
||||
return ret;
|
||||
@@ -80,7 +80,7 @@ geef_config_get_bool(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
|
||||
ErlNifBinary bin;
|
||||
int error, val;
|
||||
ERL_NIF_TERM ret;
|
||||
|
||||
|
||||
ret = extract(&cfg, &bin, env, argv);
|
||||
if (ret != atoms.ok)
|
||||
return ret;
|
||||
@@ -100,10 +100,10 @@ geef_config_set_int(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
|
||||
{
|
||||
geef_config *cfg;
|
||||
ErlNifBinary bin;
|
||||
int64_t val;
|
||||
ErlNifSInt64 val;
|
||||
int error;
|
||||
ERL_NIF_TERM ret;
|
||||
|
||||
|
||||
ret = extract(&cfg, &bin, env, argv);
|
||||
if (ret != atoms.ok)
|
||||
return ret;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
require Record
|
||||
|
||||
defmodule Geef.Object do
|
||||
@behaviour Access
|
||||
alias Geef.Object
|
||||
alias Geef.Tree
|
||||
|
||||
defstruct type: nil, id: nil, handle: nil
|
||||
|
||||
def lookup(repo, id) do
|
||||
@@ -32,4 +36,24 @@ defmodule Geef.Object do
|
||||
end
|
||||
end
|
||||
|
||||
def fetch(tree = %Object{type: :tree}, key) when is_number(key) do
|
||||
Tree.nth(tree, key)
|
||||
end
|
||||
|
||||
def fetch(tree = %Object{type: :tree}, key) do
|
||||
Tree.get(tree, key)
|
||||
end
|
||||
|
||||
def get(tree = %Object{type: :tree}, key) do
|
||||
case fetch(tree, key) do
|
||||
{:ok, entry} -> entry
|
||||
{:error, _} -> nil
|
||||
end
|
||||
end
|
||||
|
||||
# Git data is immutable
|
||||
def get_and_update(_tree, _key, _fun) do
|
||||
raise ArgumentError
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -33,31 +33,6 @@ defmodule Geef.Tree do
|
||||
|
||||
end
|
||||
|
||||
defimpl Access, for: Geef.Object do
|
||||
alias Geef.Object
|
||||
alias Geef.Tree
|
||||
|
||||
def get(tree = %Object{type: :tree}, key) when is_number(key) do
|
||||
case Tree.nth(tree, key) do
|
||||
{:ok, entry} -> entry
|
||||
{:error, _} -> nil
|
||||
end
|
||||
end
|
||||
|
||||
def get(tree = %Object{type: :tree}, key) do
|
||||
case Tree.get(tree, key) do
|
||||
{:ok, entry} -> entry
|
||||
{:error, _} -> nil
|
||||
end
|
||||
end
|
||||
|
||||
# Git data is immutable
|
||||
def get_and_update(_tree, _key, _fun) do
|
||||
raise ArgumentError
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
defmodule Geef.TreeError do
|
||||
defexception [reason: nil]
|
||||
|
||||
|
||||
4
mix.exs
4
mix.exs
@@ -10,7 +10,7 @@ defmodule Mix.Tasks.Compile.Nif do
|
||||
`["c_src"]`. Can be configured as:
|
||||
|
||||
````
|
||||
[ptahs: ["c_src", "vendor/src"]]
|
||||
[paths: ["c_src", "vendor/src"]]
|
||||
````
|
||||
|
||||
* `:exts` - extensions of the source files. Defaults to `[:c]`, can
|
||||
@@ -118,7 +118,7 @@ defmodule Geef.Mixfile do
|
||||
end
|
||||
|
||||
def nif do
|
||||
[ file: "priv/geef.so",
|
||||
[ file: "#{Path.join [__DIR__, "priv", "geef.so"]}",
|
||||
flags: "-lgit2" ]
|
||||
end
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ default(Repo) ->
|
||||
%% @doc Create a signature with the specified username and email, with
|
||||
%% a timestamp of now
|
||||
now(Name, Email) ->
|
||||
Now = now(),
|
||||
Now = os:timestamp(),
|
||||
%% We ask two questions "what's the time here?" and "what's the
|
||||
%% time in UTC-Land?". The difference in minutes is our offset.
|
||||
Local = calendar:datetime_to_gregorian_seconds(calendar:now_to_local_time(Now)),
|
||||
|
||||
@@ -8,7 +8,7 @@ config_test_() ->
|
||||
fun string_test/1]}.
|
||||
|
||||
start() ->
|
||||
{A, B, C} = now(),
|
||||
{A, B, C} = os:timestamp(),
|
||||
N = node(),
|
||||
TmpFile = io_lib:format("/tmp/geef-~p~p~p~p.gitconfig", [N, A, B, C]),
|
||||
{ok, Config} = geef_config:open(TmpFile),
|
||||
|
||||
@@ -11,7 +11,7 @@ repo_test_() ->
|
||||
fun commit_tree_test/1]}.
|
||||
|
||||
start() ->
|
||||
{A, B, C} = now(),
|
||||
{A, B, C} = os:timestamp(),
|
||||
N = node(),
|
||||
TmpDir = io_lib:format("/tmp/geef-~p~p~p~p.git", [N, A, B, C]),
|
||||
{ok, Repo} = geef_repo:init(TmpDir, true),
|
||||
|
||||
Reference in New Issue
Block a user