hbs2/hbs2-git/lib/HBS2/Git/Local.hs

32 lines
711 B
Haskell

module HBS2.Git.Local
( module HBS2.Git.Types
, module HBS2.Git.Local
)where
import HBS2.Git.Types
import Data.Functor
import Data.String
import Control.Monad
import Control.Monad.IO.Class
import Data.Set (Set)
import Data.Set qualified as Set
import System.Directory
import System.FilePath
gitReadRefs :: MonadIO m => FilePath -> Set String -> m [(GitRef, GitHash)]
gitReadRefs p m = do
xs <- forM (Set.toList m) $ \br -> do
let fn = p </> "refs/heads" </> br
here <- liftIO $ doesFileExist fn
if here then do
s <- liftIO $ readFile fn <&> (fromString br,) . fromString
pure [s]
else do
pure mempty
pure $ mconcat xs