Types for Git objects and a parser of Git object files.

module Data.Git (parseGitObject, module Data.Git.Types) where

import Codec.Zlib.Enum
import Data.Attoparsec.Enumerator
import Data.ByteString (ByteString)
import Data.Enumerator hiding (drop)
import qualified Data.Enumerator.Binary as EB
import Data.Git.Parser
import Data.Git.Types

  Parsing a Git file to 'GitObject'.
  This parser based on attoparsec-enumerator.
parseGitObject :: FilePath -> IO GitObject
parseGitObject file = run_ $ EB.enumFile file
                          $$ decompress defaultWindowBits
                          =$ iterGitObject

iterGitObject :: Iteratee ByteString IO GitObject
iterGitObject = iterParser gitObject