module Unison.Cli.DirectoryUtils ( makeMakeTempFilename, ) where import Data.Text qualified as Text import System.Directory (canonicalizePath, getTemporaryDirectory) import System.FilePath ((</>)) import System.IO.Temp qualified as Temporary import TextBuilder (TextBuilder) import TextBuilder qualified import Unison.Prelude makeMakeTempFilename :: (MonadIO m) => m (TextBuilder -> Text) makeMakeTempFilename :: forall (m :: * -> *). MonadIO m => m (TextBuilder -> Text) makeMakeTempFilename = IO (TextBuilder -> Text) -> m (TextBuilder -> Text) forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO do tmpdir0 <- IO FilePath getTemporaryDirectory tmpdir1 <- canonicalizePath tmpdir0 tmpdir2 <- Temporary.createTempDirectory tmpdir1 "unison" pure \TextBuilder filename -> FilePath -> Text Text.pack (FilePath tmpdir2 FilePath -> FilePath -> FilePath </> Text -> FilePath Text.unpack (TextBuilder -> Text TextBuilder.toText TextBuilder filename))