packages feed

hix-0.7.0: lib/Hix/Managed/Data/MutableId.hs

module Hix.Managed.Data.MutableId where

import Data.Aeson (ToJSON (toJSON), object, (.=))
import Distribution.Pretty (Pretty (pretty))
import Distribution.Version (Version)

import qualified Hix.Data.PackageId
import Hix.Data.PackageId (PackageId (PackageId))
import Hix.Managed.Data.Mutable (MutableDep (MutableDep))
import Hix.Pretty (showP)

data MutableId =
  MutableId {
    name :: MutableDep,
    version :: Version
  }
  deriving stock (Eq, Show, Generic)

toPackageId :: MutableId -> PackageId
toPackageId MutableId {name = MutableDep name, version} =
  PackageId {name, version}

instance Pretty MutableId where
  pretty = pretty . toPackageId

instance ToJSON MutableId where
  toJSON MutableId {..} =
    object ["name" .= toJSON name, "version" .= toJSON (showP version :: Text)]