aboutsummaryrefslogtreecommitdiff
path: root/lib/exgit/packfile.ex
blob: ebe19746e6e5629573ed31688ec677bc10c36bc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
defmodule Exgit.Packfile do
  @moduledoc """
  Module for parsing Git Packfiles
  """

  @spec parse_header(binary) :: {:pack, 2|3, integer}
  def parse_header(packfile) do
    <<"PACK" :: utf8, 2 :: size(32), n :: size(32)>> <> rest = packfile
    {:pack, 2, n, rest}
  end

  @spec parse_objects(integer, binary) :: [{:commit|:blob|:tree,
                                            binary,
                                            binary}]
  def parse_objects(n, pack) do
    pack |> IO.inspect
  end

  defp parse_object(data) do
    <<type :: size(4), _>> = data
  end
end