{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Package.C.Db.Type ( BuildCfg (..)
, InstallDb (..)
, installedPackages
) where
import CPkgPrelude
import Data.Semigroup
import qualified Data.Set as S
import qualified Data.Text as T
import Package.C.Type
newtype InstallDb = InstallDb { _installedPackages :: S.Set BuildCfg }
deriving newtype (Semigroup, Monoid, Binary)
installedPackages :: Lens' InstallDb (S.Set BuildCfg)
installedPackages f s = fmap (\x -> s { _installedPackages = x }) (f (_installedPackages s))
data BuildCfg = BuildCfg { buildName :: String
, buildVersion :: Version
, pinnedBuildDeps :: [(T.Text, Version)]
, pinnedDeps :: [(T.Text, Version)]
, targetArch :: Maybe TargetTriple
, global :: Bool
, configureCmds :: [ Command ]
, buildCmds :: [ Command ]
, installCmds :: [ Command ]
} deriving (Eq, Ord, Generic, Binary, Hashable)