packages feed

hix-0.9.0: lib/Hix/Managed/Data/MaintContext.hs

module Hix.Managed.Data.MaintContext where

import Data.Aeson (FromJSON)
import Path (Dir, Path, Rel)
import Text.PrettyPrint (($+$))

import Hix.Data.PackageName (LocalPackage)
import Hix.Managed.Cabal.Data.ContextHackageRepo (ContextHackageRepo)
import Hix.Managed.Cabal.Data.HackageRepo (HackageName)
import Hix.Managed.Data.Envs (Envs)
import Hix.Managed.Data.ManagedPackage (ManagedPackage)
import Hix.Managed.Data.Packages (Packages)
import Hix.Pretty (HPretty (hpretty), prettyMap, field)

data MaintPackage =
  MaintPackage {
    package :: ManagedPackage,
    path :: Path Rel Dir
  }
  deriving stock (Eq, Show, Generic)
  deriving anyclass (FromJSON)

instance HPretty MaintPackage where
  hpretty MaintPackage {..} =
    hpretty package $+$ hpretty path

data MaintContext =
  MaintContext {
    packages :: Packages MaintPackage,
    hackage :: Map HackageName ContextHackageRepo,
    envs :: Envs [LocalPackage]
  }
  deriving stock (Eq, Show, Generic)
  deriving anyclass (FromJSON)

instance HPretty MaintContext where
  hpretty MaintContext {..} =
    prettyMap "maint" [
      field "packages" packages,
      field "hackage" hackage,
      field "envs" envs
    ]