module Git.Reference where import Conduit import Git.Types listReferences :: MonadGit r m => m [RefName] listReferences :: m [RefName] listReferences = ConduitT () Void m [RefName] -> m [RefName] forall (m :: * -> *) r. Monad m => ConduitT () Void m r -> m r runConduit (ConduitT () Void m [RefName] -> m [RefName]) -> ConduitT () Void m [RefName] -> m [RefName] forall a b. (a -> b) -> a -> b $ ConduitT () RefName m () forall r (m :: * -> *) i. MonadGit r m => ConduitT i RefName m () sourceReferences ConduitT () RefName m () -> ConduitM RefName Void m [RefName] -> ConduitT () Void m [RefName] forall (m :: * -> *) a b c r. Monad m => ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r .| ConduitM RefName Void m [RefName] forall (m :: * -> *) a o. Monad m => ConduitT a o m [a] sinkList resolveReference :: MonadGit r m => RefName -> m (Maybe (Oid r)) resolveReference :: RefName -> m (Maybe (Oid r)) resolveReference RefName name = do Maybe (RefTarget r) mref <- RefName -> m (Maybe (RefTarget r)) forall r (m :: * -> *). MonadGit r m => RefName -> m (Maybe (RefTarget r)) lookupReference RefName name m (Maybe (Oid r)) -> (RefTarget r -> m (Maybe (Oid r))) -> Maybe (RefTarget r) -> m (Maybe (Oid r)) forall b a. b -> (a -> b) -> Maybe a -> b maybe (Maybe (Oid r) -> m (Maybe (Oid r)) forall (m :: * -> *) a. Monad m => a -> m a return Maybe (Oid r) forall a. Maybe a Nothing) RefTarget r -> m (Maybe (Oid r)) forall r (m :: * -> *). MonadGit r m => RefTarget r -> m (Maybe (Oid r)) referenceToOid Maybe (RefTarget r) mref referenceToOid :: MonadGit r m => RefTarget r -> m (Maybe (Oid r)) referenceToOid :: RefTarget r -> m (Maybe (Oid r)) referenceToOid (RefObj Oid r oid) = Maybe (Oid r) -> m (Maybe (Oid r)) forall (m :: * -> *) a. Monad m => a -> m a return (Maybe (Oid r) -> m (Maybe (Oid r))) -> Maybe (Oid r) -> m (Maybe (Oid r)) forall a b. (a -> b) -> a -> b $ Oid r -> Maybe (Oid r) forall a. a -> Maybe a Just Oid r oid referenceToOid (RefSymbolic RefName name) = RefName -> m (Maybe (Oid r)) forall r (m :: * -> *). MonadGit r m => RefName -> m (Maybe (Oid r)) resolveReference RefName name