module Hix.Managed.ProjectResult where

import qualified Hix.Managed.Data.Mutation
import Hix.Managed.Data.Mutation (FailedMutation)
import qualified Hix.Managed.Data.ProjectResult
import Hix.Managed.Data.ProjectResult (ProjectResult (ProjectResult))
import qualified Hix.Managed.EnvResult as EnvResult
import Hix.Managed.EnvResult (DepResults, normalizeDepResults)

grouped :: ProjectResult -> DepResults
grouped :: ProjectResult -> DepResults
grouped ProjectResult {NonEmpty EnvResult
envs :: NonEmpty EnvResult
envs :: ProjectResult -> NonEmpty EnvResult
envs} =
  DepResults -> DepResults
normalizeDepResults ((EnvResult -> DepResults) -> NonEmpty EnvResult -> DepResults
forall m a. Monoid m => (a -> m) -> NonEmpty a -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap EnvResult -> DepResults
EnvResult.grouped NonEmpty EnvResult
envs)

failures :: ProjectResult -> [FailedMutation]
failures :: ProjectResult -> [FailedMutation]
failures ProjectResult {NonEmpty EnvResult
envs :: ProjectResult -> NonEmpty EnvResult
envs :: NonEmpty EnvResult
envs} =
  (FailedMutation -> MutableDep)
-> [FailedMutation] -> [FailedMutation]
forall b a. Ord b => (a -> b) -> [a] -> [a]
sortOn (.package) (EnvResult -> [FailedMutation]
EnvResult.failures (EnvResult -> [FailedMutation]) -> [EnvResult] -> [FailedMutation]
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< NonEmpty EnvResult -> [EnvResult]
forall a. NonEmpty a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList NonEmpty EnvResult
envs)