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 -> SolverState -> M (Maybe (Versions, Overrides, BuildStatus)) buildConstraints EnvBuilder builder EnvContext context Text description SolverState solver M (Maybe (Versions, Overrides, BuildStatus)) -> (Maybe (Versions, Overrides, BuildStatus) -> BuildStatus) -> M BuildStatus forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b <&> \case Just (Versions _, Overrides _, BuildStatus status) -> BuildStatus status Maybe (Versions, Overrides, 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