{-# LANGUAGE TypeApplications, DataKinds #-}
module Aura.Pkgbuild.Records
( hasPkgbuildStored
, storePkgbuilds
) where
import Aura.Pkgbuild.Base
import Aura.Types
import BasePrelude
import qualified Data.ByteString.Lazy.Char8 as BL
import Data.Generics.Product (field)
import Data.Set.NonEmpty (NonEmptySet)
import Lens.Micro ((^.))
import System.Path (toFilePath)
import System.Path.IO (doesFileExist, createDirectoryIfMissing)
hasPkgbuildStored :: PkgName -> IO Bool
hasPkgbuildStored = doesFileExist . pkgbuildPath
storePkgbuilds :: NonEmptySet Buildable -> IO ()
storePkgbuilds bs = do
createDirectoryIfMissing True pkgbuildCache
traverse_ (\p -> writePkgbuild (p ^. field @"name") (p ^. field @"pkgbuild")) bs
writePkgbuild :: PkgName -> Pkgbuild -> IO ()
writePkgbuild pn (Pkgbuild pb) = BL.writeFile (toFilePath $ pkgbuildPath pn) pb