module Hix.Managed.Build.Single where
import Hix.Data.Monad (M)
import Hix.Data.VersionBounds (exactVersion)
import Hix.Managed.Build (buildConstraints)
import Hix.Managed.Cabal.Data.SolverState (solverState)
import Hix.Managed.Constraints (fromVersions)
import qualified Hix.Managed.Data.EnvContext
import Hix.Managed.Data.EnvContext (EnvContext)
import Hix.Managed.Data.Mutable (MutableVersions)
import Hix.Managed.Data.StageState (BuildStatus (Failure))
import Hix.Managed.Handlers.Build (EnvBuilder)
buildVersions ::
EnvBuilder ->
EnvContext ->
Text ->
MutableVersions ->
M BuildStatus
buildVersions :: EnvBuilder
-> EnvContext -> Text -> MutableVersions -> M BuildStatus
buildVersions EnvBuilder
builder EnvContext
context Text
description MutableVersions
versions =
EnvBuilder
-> EnvContext
-> Text
-> Bool
-> Set PackageId
-> SolverState
-> M (Maybe (Versions, Overrides, Set PackageId, BuildStatus))
buildConstraints EnvBuilder
builder EnvContext
context Text
description Bool
False [] SolverState
solver M (Maybe (Versions, Overrides, Set PackageId, BuildStatus))
-> (Maybe (Versions, Overrides, Set PackageId, BuildStatus)
-> BuildStatus)
-> M BuildStatus
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \case
Just (Versions
_, Overrides
_, Set PackageId
_, BuildStatus
status) -> BuildStatus
status
Maybe (Versions, Overrides, Set PackageId, BuildStatus)
Nothing -> BuildStatus
Failure
where
solver :: SolverState
solver = Ranges -> EnvDeps -> EnvConstraints -> SolverFlags -> SolverState
solverState EnvContext
context.solverBounds EnvContext
context.deps ((Version -> VersionBounds) -> MutableVersions -> EnvConstraints
fromVersions Version -> VersionBounds
exactVersion MutableVersions
versions) SolverFlags
forall a. Default a => a
def