hix-0.5.0: lib/Hix/Data/ProjectFile.hs
module Hix.Data.ProjectFile where
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Reader (ask)
import qualified Data.Text.IO as Text
import Path (File, Path, Rel, parent, toFilePath, (</>))
import Path.IO (createDirIfMissing)
import Hix.Data.Error (tryIO)
import qualified Hix.Monad
import Hix.Monad (Env (Env), M)
data ProjectFile =
ProjectFile {
path :: Path Rel File,
content :: Text
}
deriving stock (Eq, Show, Generic)
createFile :: ProjectFile -> M ()
createFile f = do
Env {cwd} <- ask
let
file = cwd </> f.path
lift $ tryIO do
createDirIfMissing True (parent file)
Text.writeFile (toFilePath file) f.content