hix-0.7.0: lib/Hix/Managed/Data/BuildOutput.hs
module Hix.Managed.Data.BuildOutput where
import Data.Aeson (ToJSON (toJSON), object, (.=))
import Distribution.Pretty (Pretty (pretty))
import Text.PrettyPrint (brackets, (<+>))
import Hix.Data.Version (Version)
import Hix.Data.VersionBounds (VersionBounds)
import Hix.Managed.Data.Mutable (MutableDep)
import qualified Hix.Managed.Data.MutableId
import Hix.Managed.Data.MutableId (MutableId (MutableId))
import Hix.Pretty (showP)
data ModifiedId =
ModifiedId {
package :: MutableDep,
version :: Version,
range :: Maybe VersionBounds
}
deriving stock (Eq, Show, Generic)
instance Pretty ModifiedId where
pretty ModifiedId {..} =
pretty MutableId {name = package, version} <+> brackets (maybe "old range matches" pretty range)
instance ToJSON ModifiedId where
toJSON ModifiedId {..} =
object [
"package" .= toJSON package,
"version" .= toJSON (showP version :: Text),
"range" .= toJSON (showP <$> range :: Maybe Text)
]
data BuildOutput =
BuildOutput {
modified :: [ModifiedId],
unmodified :: [MutableDep],
failed :: [MutableDep],
modifiedNames :: Maybe Text,
unmodifiedNames :: Maybe Text,
failedNames :: Maybe Text
}
deriving stock (Eq, Show, Generic)
deriving anyclass (ToJSON)