add Geef.Revwalk module for Elixir

This commit is contained in:
Ramon Snir
2015-07-18 20:36:14 +03:00
committed by Carlos Martín Nieto
parent 01254f2f90
commit 79f89bcd41
11 changed files with 146 additions and 31 deletions

View File

@@ -12,6 +12,7 @@ defmodule Geef do
alias Geef.Oid
alias Geef.Reference
alias Geef.Repository
alias Geef.Revwalk
alias Geef.Signature
alias Geef.Tree
alias Geef.Tag

View File

@@ -18,6 +18,7 @@ defmodule Geef.Repository do
def gitdir(repo), do: :geef_repo.path(repo)
def workdir(repo), do: :geef_repo.workdir(repo)
def config(repo), do: :geef_repo.config(repo)
def revwalk(repo), do: :geef_repo.revwalk(repo)
def reference_names(repo), do: :geef_repo.references(repo)
end

32
lib/geef/revwalk.ex Normal file
View File

@@ -0,0 +1,32 @@
defmodule Geef.Revwalk do
import Geef
alias Geef.Object
def stop(walk), do: :geef_revwalk.stop(walk)
def open(repo) when is_pid(repo), do: Repository.revwalk(repo)
def open!(arg), do: open(arg) |> assert_ok
def push(walk, %Object{type: :commit, id: commit}), do: push(walk, commit)
def push(walk, commit), do: :geef_revwalk.push(walk, commit)
def hide(walk, %Object{type: :commit, id: commit}), do: hide(walk, commit)
def hide(walk, commit), do: :geef_revwalk.hide(walk, commit)
def simplify_first_parent(walk), do: :geef_revwalk.simplify_first_parent(walk)
def sorting(walk, flags \\ [])
def sorting(walk, flags) when is_list(flags) do
flags = Enum.map(flags, &compile_sorting_flag/1)
:geef_revwalk.sorting(walk, flags)
end
def sorting(walk, flag), do: sorting(walk, [flag])
def next(walk), do: :geef_revwalk.next(walk)
def reset(walk), do: :geef_revwalk.reset(walk)
defp compile_sorting_flag(:topological_sort), do: :toposort
defp compile_sorting_flag(:time_sort), do: :timesort
defp compile_sorting_flag(:reverse_sort), do: :reversesort
end