module Jenga.Render
( LazyText (..)
, renderAsCabalConfig
, renderAsMafiaLock
) where
import qualified Data.List as DL
import Data.Text (Text)
import qualified Data.Text.Lazy as LT
import Jenga.PackageList
newtype LazyText
= LazyText { unLazyText :: LT.Text }
renderAsCabalConfig :: [(Text, PackageInfo)] -> LazyText
renderAsCabalConfig pkgs =
LazyText . LT.fromChunks $ "constraints: " : cabalLines
where
cabalLines = DL.concat . DL.intersperse [",\n "] $ DL.map renderPackage pkgs
renderAsMafiaLock :: [(Text, PackageInfo)] -> LazyText
renderAsMafiaLock pkgs =
LazyText . LT.fromChunks $ DL.intercalate ["\n"] mafiaLines
where
mafiaLines = ["# mafia-lock-file-version: 0"] : DL.map renderPackage pkgs
renderPackage :: (Text, PackageInfo) -> [Text]
renderPackage (name, pkg) =
[ name, " == ", packageVersion pkg ]