module Ribosome.File( canonicalPathWithHome, canonicalPath, canonicalPaths, ) where import Control.Monad.IO.Class (MonadIO, liftIO) import Data.String.Utils (replace) import System.Directory (getHomeDirectory, canonicalizePath) canonicalPathWithHome :: FilePath -> FilePath -> FilePath canonicalPathWithHome = replace "~" canonicalPath :: MonadIO m => FilePath -> m FilePath canonicalPath path = do home <- liftIO getHomeDirectory return $ canonicalPathWithHome home path canonicalPaths :: MonadIO m => [FilePath] -> m [FilePath] canonicalPaths paths = do home <- liftIO getHomeDirectory let withHome = fmap (canonicalPathWithHome home) paths liftIO $ mapM canonicalizePath withHome