module Data.Git.Types where
import Data.ByteString (ByteString)
import System.Posix.Types (FileMode)
data GitType = GtBlob | GtTree | GtCommit | GtTag deriving (Eq,Show)
type Size = Int
data GitObject = GoBlob Size Blob
| GoTree Size [GitTreeEntry]
| GoCommit Size GitCommit
| GoTag Size GitTag
deriving (Eq,Show)
type Blob = ByteString
data GitTreeEntry = GitTreeEntry {
fileType :: FileType
, fileName :: FilePath
, fileRef :: SHA1
} deriving (Eq,Show)
data FileType = RegularFile FileMode
| Directory
| SymbolicLink
| GitLink
deriving (Eq,Show)
data GitCommit = GitCommit {
commitRef :: SHA1
, commitParents :: [SHA1]
, commitAuthor :: ByteString
, committer :: ByteString
, commitLog :: ByteString
} deriving (Eq,Show)
data GitTag = GitTag {
tagRef :: SHA1
, tagType :: ByteString
, tagName :: ByteString
, tagger :: ByteString
, tagLog :: ByteString
} deriving (Eq,Show)
newtype SHA1 = SHA1 String deriving Eq
instance Show SHA1 where
show (SHA1 x) = x