packages feed

gitlib 1.1.0 → 1.2.0

raw patch · 2 files changed

+71/−43 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Git: instance (Functor m, Monad m) => Applicative (TreeT m)
- Git: instance (Functor m, MonadPlus m) => Alternative (TreeT m)
- Git: instance Functor m => Functor (TreeT m)
- Git: instance Monad m => Monad (TreeT m)
- Git: instance MonadFix m => MonadFix (TreeT m)
- Git: instance MonadIO m => MonadIO (TreeT m)
- Git: instance MonadPlus m => MonadPlus (TreeT m)
- Git: instance MonadTrans TreeT
+ Git: data MutableTree
+ Git: data PersistentTree
+ Git: instance (Functor m, Monad m) => Applicative (TreeT t m)
+ Git: instance (Functor m, MonadPlus m) => Alternative (TreeT t m)
+ Git: instance Functor m => Functor (TreeT t m)
+ Git: instance Monad m => Monad (TreeT t m)
+ Git: instance MonadFix m => MonadFix (TreeT t m)
+ Git: instance MonadIO m => MonadIO (TreeT t m)
+ Git: instance MonadPlus m => MonadPlus (TreeT t m)
+ Git: instance MonadTrans (TreeT t)
+ Git: type MutableTreeT m a = TreeT (Tree m MutableTree) m a
+ Git: type PersistentTreeT m a = TreeT (Tree m PersistentTree) m a
+ Git: type RepositoryTree m = Tree m (TreeKind m)
+ Git: type RepositoryTreeT m a = TreeT (RepositoryTree m) m a
- Git: class (Applicative m, Monad m, Failure GitException m, IsOid (Oid m)) => Repository m where type family Oid m type family Tree m data family Options m createRef_ = (void .) . createRef updateRef_ = (void .) . updateRef allRefs = catMaybes <$> (mapM lookupRef =<< allRefNames) allRefNames = map refName <$> allRefs resolveRef name = lookupRef name >>= referenceToRef (Just name) traverseObjects_ = (void .) . traverseObjects traverseCommits_ = (void .) . traverseCommits traverseEntries_ = (void .) . traverseEntries buildPackFile _ _ = failure (BackendError "Backend does not support building pack files") buildPackIndex _ _ = failure (BackendError "Backend does not support building pack indexes") writePackFile _ = failure (BackendError "Backend does not support writing pack files")
+ Git: class (Applicative m, Monad m, Failure GitException m, IsOid (Oid m)) => Repository m where type family Oid m :: * type family TreeKind m :: * type family Tree m :: * -> * data family Options m createRef_ = (void .) . createRef updateRef_ = (void .) . updateRef allRefs = catMaybes <$> (mapM lookupRef =<< allRefNames) allRefNames = map refName <$> allRefs resolveRef name = lookupRef name >>= referenceToRef (Just name) traverseObjects_ = (void .) . traverseObjects traverseCommits_ = (void .) . traverseCommits traverseEntries_ = (void .) . traverseEntries buildPackFile _ _ = failure (BackendError "Backend does not support building pack files") buildPackIndex _ _ = failure (BackendError "Backend does not support building pack indexes") writePackFile _ = failure (BackendError "Backend does not support writing pack files")
- Git: cloneTree :: Repository m => Tree m -> m (Tree m)
+ Git: cloneTree :: Repository m => RepositoryTree m -> m (RepositoryTree m)
- Git: createTree :: Repository m => TreeT m a -> m (Tree m)
+ Git: createTree :: Repository m => RepositoryTreeT m a -> m (RepositoryTree m)
- Git: data TreeT m a
+ Git: data TreeT t m a
- Git: dropEntry :: Repository m => FilePath -> TreeT m ()
+ Git: dropEntry :: Repository m => FilePath -> RepositoryTreeT m ()
- Git: getEntry :: Repository m => FilePath -> TreeT m (Maybe (TreeEntry m))
+ Git: getEntry :: Repository m => FilePath -> RepositoryTreeT m (Maybe (TreeEntry m))
- Git: getTreeEntry :: Repository m => Tree m -> FilePath -> m (Maybe (TreeEntry m))
+ Git: getTreeEntry :: Repository m => RepositoryTree m -> FilePath -> m (Maybe (TreeEntry m))
- Git: lookupTree :: Repository m => TreeOid m -> m (Tree m)
+ Git: lookupTree :: Repository m => TreeOid m -> m (RepositoryTree m)
- Git: mutateTree :: Repository m => Tree m -> TreeT m a -> m (Tree m)
+ Git: mutateTree :: Repository m => RepositoryTree m -> RepositoryTreeT m a -> m (RepositoryTree m)
- Git: newTree :: Repository m => m (Tree m)
+ Git: newTree :: Repository m => m (RepositoryTree m)
- Git: putBlob :: Repository m => FilePath -> BlobOid m -> TreeT m ()
+ Git: putBlob :: Repository m => FilePath -> BlobOid m -> RepositoryTreeT m ()
- Git: putBlob' :: Repository m => FilePath -> BlobOid m -> BlobKind -> TreeT m ()
+ Git: putBlob' :: Repository m => FilePath -> BlobOid m -> BlobKind -> RepositoryTreeT m ()
- Git: putCommit :: Repository m => FilePath -> CommitOid m -> TreeT m ()
+ Git: putCommit :: Repository m => FilePath -> CommitOid m -> RepositoryTreeT m ()
- Git: putEntry :: Repository m => FilePath -> TreeEntry m -> TreeT m ()
+ Git: putEntry :: Repository m => FilePath -> TreeEntry m -> RepositoryTreeT m ()
- Git: putTree :: Repository m => FilePath -> TreeRef m -> TreeT m ()
+ Git: putTree :: Repository m => FilePath -> TreeRef m -> RepositoryTreeT m ()
- Git: resolveTreeRef :: Repository m => TreeRef m -> m (Tree m)
+ Git: resolveTreeRef :: Repository m => TreeRef m -> m (RepositoryTree m)
- Git: traverseEntries :: Repository m => (FilePath -> TreeEntry m -> m a) -> Tree m -> m [a]
+ Git: traverseEntries :: Repository m => (FilePath -> TreeEntry m -> m a) -> RepositoryTree m -> m [a]
- Git: traverseEntries_ :: Repository m => (FilePath -> TreeEntry m -> m a) -> Tree m -> m ()
+ Git: traverseEntries_ :: Repository m => (FilePath -> TreeEntry m -> m a) -> RepositoryTree m -> m ()
- Git: treeEntry :: Repository m => Tree m -> TreeEntry m
+ Git: treeEntry :: Repository m => RepositoryTree m -> TreeEntry m
- Git: treeRef :: Tree m -> TreeRef m
+ Git: treeRef :: RepositoryTree m -> TreeRef m
- Git: type TreeOid m = Tagged (Tree m) (Oid m)
+ Git: type TreeOid m = Tagged (RepositoryTree m) (Oid m)
- Git: type TreeRef m = ObjRef m (Tree m)
+ Git: type TreeRef m = ObjRef m (RepositoryTree m)
- Git: unsafeGetTree :: Monad m => TreeT m (Tree m)
+ Git: unsafeGetTree :: Monad m => RepositoryTreeT m (RepositoryTree m)
- Git: unsafeMutateTree :: Repository m => Tree m -> TreeT m a -> m (Tree m)
+ Git: unsafeMutateTree :: Repository m => Tree m MutableTree -> MutableTreeT m a -> m (Tree m MutableTree)
- Git: unsafeMutateTree_ :: Repository m => Tree m -> TreeT m a -> m ()
+ Git: unsafeMutateTree_ :: Repository m => Tree m MutableTree -> MutableTreeT m a -> m ()
- Git: unsafePutTree :: Monad m => Tree m -> TreeT m ()
+ Git: unsafePutTree :: Monad m => RepositoryTree m -> RepositoryTreeT m ()
- Git: unsafeUpdateTree :: Repository m => Tree m -> FilePath -> Bool -> (Maybe (TreeEntry m) -> ModifyTreeResult m) -> m (Tree m, Maybe (TreeEntry m))
+ Git: unsafeUpdateTree :: Repository m => RepositoryTree m -> FilePath -> Bool -> (Maybe (TreeEntry m) -> ModifyTreeResult m) -> m (RepositoryTree m, Maybe (TreeEntry m))
- Git: unsafeWithTree :: Repository m => Tree m -> TreeT m a -> m (a, Tree m)
+ Git: unsafeWithTree :: Repository m => Tree m MutableTree -> MutableTreeT m a -> m (a, Tree m MutableTree)
- Git: withNewTree :: Repository m => TreeT m a -> m (a, Tree m)
+ Git: withNewTree :: Repository m => RepositoryTreeT m a -> m (a, RepositoryTree m)
- Git: withTree :: Repository m => Tree m -> TreeT m a -> m (a, Tree m)
+ Git: withTree :: Repository m => RepositoryTree m -> RepositoryTreeT m a -> m (a, RepositoryTree m)
- Git: writeTree :: Repository m => Tree m -> m (TreeOid m)
+ Git: writeTree :: Repository m => RepositoryTree m -> m (TreeOid m)

Files

Git.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE EmptyDataDecls #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE MultiParamTypeClasses #-}@@ -35,6 +36,12 @@        , resolveBlobRef         , TreeT+       , RepositoryTree+       , RepositoryTreeT+       , MutableTree+       , MutableTreeT+       , PersistentTree+       , PersistentTreeT        , TreeEntry(..)        , TreeOid        , TreeRef@@ -137,8 +144,9 @@ -- Git data objects.  Every object must belong to some repository. class (Applicative m, Monad m, Failure GitException m, IsOid (Oid m))       => Repository m where-    type Oid m-    type Tree m+    type Oid m :: *+    type TreeKind m :: *+    type Tree m :: * -> *      data Options m @@ -167,7 +175,7 @@      -- Lookup     lookupCommit :: CommitOid m -> m (Commit m)-    lookupTree   :: TreeOid m -> m (Tree m)+    lookupTree   :: TreeOid m -> m (RepositoryTree m)     lookupBlob   :: BlobOid m -> m (Blob m)     lookupTag    :: TagOid m -> m (Tag m) @@ -194,19 +202,19 @@                    -> m [Object m]         -- ^ All the objects in between      -- Object creation-    newTree :: m (Tree m)-    cloneTree :: Tree m -> m (Tree m)-    traverseEntries :: (FilePath -> TreeEntry m -> m a) -> Tree m -> m [a]-    traverseEntries_ :: (FilePath -> TreeEntry m -> m a) -> Tree m -> m ()+    newTree :: m (RepositoryTree m)+    cloneTree :: RepositoryTree m -> m (RepositoryTree m)+    traverseEntries :: (FilePath -> TreeEntry m -> m a) -> RepositoryTree m -> m [a]+    traverseEntries_ :: (FilePath -> TreeEntry m -> m a) -> RepositoryTree m -> m ()     traverseEntries_ = (void .) . traverseEntries-    writeTree :: Tree m -> m (TreeOid m)+    writeTree :: RepositoryTree m -> m (TreeOid m)      unsafeUpdateTree-        :: Tree m+        :: RepositoryTree m         -> FilePath    -- path within the tree         -> Bool        -- create subtree's leading up to path?         -> (Maybe (TreeEntry m) -> ModifyTreeResult m)-        -> m (Tree m, Maybe (TreeEntry m))+        -> m (RepositoryTree m, Maybe (TreeEntry m))      hashContents :: BlobContents m -> m (BlobOid m)     createBlob   :: BlobContents m -> m (BlobOid m)@@ -279,7 +287,7 @@  {- $oids -} type BlobOid m   = Tagged (Blob m) (Oid m)-type TreeOid m   = Tagged (Tree m) (Oid m)+type TreeOid m   = Tagged (RepositoryTree m) (Oid m) type CommitOid m = Tagged (Commit m) (Oid m) type TagOid m    = Tagged (Tag m) (Oid m) @@ -334,7 +342,7 @@ data ObjRef m a = ByOid !(Tagged a (Oid m)) | Known !a  type BlobRef m   = ObjRef m (Blob m)-type TreeRef m   = ObjRef m (Tree m)+type TreeRef m   = ObjRef m (RepositoryTree m) type CommitRef m = ObjRef m (Commit m) type TagRef m    = ObjRef m (Tag m) @@ -375,96 +383,116 @@   _ == _ = False  {- $trees -}-newtype TreeT m a = TreeT { runTreeT :: StateT (Tree m) m a }+newtype TreeT t m a = TreeT { runTreeT :: StateT t m a } -instance Functor m => Functor (TreeT m) where+data MutableTree+type MutableTreeT m a = TreeT (Tree m MutableTree) m a++data PersistentTree+type PersistentTreeT m a = TreeT (Tree m PersistentTree) m a++type RepositoryTree m = Tree m (TreeKind m)+type RepositoryTreeT m a = TreeT (RepositoryTree m) m a++instance Functor m => Functor (TreeT t m) where     fmap f (TreeT t) = TreeT (fmap f t) -instance Monad m => Monad (TreeT m) where+instance Monad m => Monad (TreeT t m) where     return x = TreeT (return x)     TreeT x >>= f = TreeT (x >>= runTreeT . f) -instance (Functor m, Monad m) => Applicative (TreeT m) where+instance (Functor m, Monad m) => Applicative (TreeT t m) where     pure = return     (<*>) = ap -instance (Functor m, MonadPlus m) => Alternative (TreeT m) where+instance (Functor m, MonadPlus m) => Alternative (TreeT t m) where     empty = mzero     (<|>) = mplus -instance (MonadPlus m) => MonadPlus (TreeT m) where+instance (MonadPlus m) => MonadPlus (TreeT t m) where     mzero       = TreeT $ mzero     m `mplus` n = TreeT $ runTreeT m `mplus` runTreeT n -instance (MonadFix m) => MonadFix (TreeT m) where+instance (MonadFix m) => MonadFix (TreeT t m) where     mfix f = TreeT $ mfix $ \ ~a -> runTreeT (f a) -instance MonadTrans TreeT where+instance MonadTrans (TreeT t) where     lift m = TreeT $ lift m -instance (MonadIO m) => MonadIO (TreeT m) where+instance (MonadIO m) => MonadIO (TreeT t m) where     liftIO = lift . liftIO -unsafeGetTree :: Monad m => TreeT m (Tree m)+unsafeGetTree :: Monad m => RepositoryTreeT m (RepositoryTree m) unsafeGetTree = TreeT get -unsafePutTree :: Monad m => Tree m -> TreeT m ()+unsafePutTree :: Monad m => RepositoryTree m -> RepositoryTreeT m () unsafePutTree = TreeT . put -getEntry :: Repository m => FilePath -> TreeT m (Maybe (TreeEntry m))+getEntry :: Repository m => FilePath -> RepositoryTreeT m (Maybe (TreeEntry m)) getEntry path = do     tr <- unsafeGetTree     snd <$> lift (unsafeUpdateTree tr path False                   (toModifyTreeResult TreeEntryPersistent)) -getTreeEntry :: Repository m => Tree m -> FilePath -> m (Maybe (TreeEntry m))-getTreeEntry tree path = fst <$> unsafeWithTree tree (getEntry path)+getTreeEntry :: Repository m => RepositoryTree m -> FilePath -> m (Maybe (TreeEntry m))+getTreeEntry tree path =+    fst <$> (flip runStateT tree $ runTreeT (getEntry path)) -putEntry :: Repository m => FilePath -> TreeEntry m -> TreeT m ()+putEntry :: Repository m => FilePath -> TreeEntry m -> RepositoryTreeT m () putEntry path ent = do     tr <- unsafeGetTree     tr' <- fst <$> lift (unsafeUpdateTree tr path True                          (const (TreeEntryMutated ent)))     unsafePutTree tr' -dropEntry :: Repository m => FilePath -> TreeT m ()+dropEntry :: Repository m => FilePath -> RepositoryTreeT m () dropEntry path = do     tr <- unsafeGetTree     tr' <- fst <$> lift (unsafeUpdateTree tr path False                          (const TreeEntryDeleted))     unsafePutTree tr' -putBlob' :: Repository m => FilePath -> BlobOid m -> BlobKind -> TreeT m ()+putBlob' :: Repository m => FilePath -> BlobOid m -> BlobKind -> RepositoryTreeT m () putBlob' path b kind = putEntry path (BlobEntry b kind) -putBlob :: Repository m => FilePath -> BlobOid m -> TreeT m ()+putBlob :: Repository m => FilePath -> BlobOid m -> RepositoryTreeT m () putBlob path b = putBlob' path b PlainBlob -putTree :: Repository m => FilePath -> TreeRef m -> TreeT m ()+putTree :: Repository m => FilePath -> TreeRef m -> RepositoryTreeT m () putTree path ent = putEntry path (TreeEntry ent) -putCommit :: Repository m => FilePath -> CommitOid m -> TreeT m ()+putCommit :: Repository m => FilePath -> CommitOid m -> RepositoryTreeT m () putCommit path c = putEntry path (CommitEntry c) -withNewTree :: Repository m => TreeT m a -> m (a, Tree m)+withNewTree :: Repository m => RepositoryTreeT m a -> m (a, RepositoryTree m) withNewTree (TreeT action) = runStateT action =<< newTree -createTree :: Repository m => TreeT m a -> m (Tree m)+createTree :: Repository m => RepositoryTreeT m a -> m (RepositoryTree m) createTree (TreeT action) = execStateT action =<< newTree -withTree :: Repository m => Tree m -> TreeT m a -> m (a, Tree m)+withTree :: Repository m+         => RepositoryTree m+         -> RepositoryTreeT m a+         -> m (a, RepositoryTree m) withTree tr (TreeT action) = runStateT action =<< cloneTree tr -unsafeWithTree :: Repository m => Tree m -> TreeT m a -> m (a, Tree m)+unsafeWithTree :: Repository m+               => Tree m MutableTree -> MutableTreeT m a+               -> m (a, Tree m MutableTree) unsafeWithTree tr (TreeT action) = runStateT action tr -mutateTree :: Repository m => Tree m -> TreeT m a -> m (Tree m)+mutateTree :: Repository m+           => RepositoryTree m -> RepositoryTreeT m a+           -> m (RepositoryTree m) mutateTree tr (TreeT action) = execStateT action =<< cloneTree tr -unsafeMutateTree :: Repository m => Tree m -> TreeT m a -> m (Tree m)+unsafeMutateTree :: Repository m+                 => Tree m MutableTree -> MutableTreeT m a+                 -> m (Tree m MutableTree) unsafeMutateTree tr (TreeT action) = execStateT action tr -unsafeMutateTree_ :: Repository m => Tree m -> TreeT m a -> m ()+unsafeMutateTree_ :: Repository m+                  => Tree m MutableTree -> MutableTreeT m a -> m () unsafeMutateTree_ = (void .) . unsafeMutateTree  data TreeEntry m = BlobEntry   { blobEntryOid   :: !(BlobOid m)@@ -480,7 +508,7 @@ blobEntry :: Repository m => BlobOid m -> BlobKind -> TreeEntry m blobEntry = BlobEntry -treeEntry :: Repository m => Tree m -> TreeEntry m+treeEntry :: Repository m => RepositoryTree m -> TreeEntry m treeEntry = TreeEntry . treeRef  commitEntry :: Repository m => Commit m -> TreeEntry m@@ -504,14 +532,14 @@ toModifyTreeResult f (Just x) = f x  -- | A 'Tree' is anything that is "treeish".-treeRef :: Tree m -> TreeRef m+treeRef :: RepositoryTree m -> TreeRef m treeRef = Known  treeRefOid :: Repository m => TreeRef m -> m (TreeOid m) treeRefOid (ByOid x) = return x treeRefOid (Known x) = writeTree x -resolveTreeRef :: Repository m => TreeRef m -> m (Tree m)+resolveTreeRef :: Repository m => TreeRef m -> m (RepositoryTree m) resolveTreeRef (ByOid oid) = lookupTree oid resolveTreeRef (Known obj) = return obj 
gitlib.cabal view
@@ -1,5 +1,5 @@ Name:                gitlib-Version:             1.1.0+Version:             1.2.0 Synopsis:            API library for working with Git repositories License-file:        LICENSE License:             MIT