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))