packages feed

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

module Hix.Managed.Data.ProjectState where

import Distribution.Pretty (Pretty (pretty))
import Text.PrettyPrint (hang, ($+$))

import Hix.Class.EncodeNix (EncodeNix)
import Hix.Data.Bounds (Bounds)
import Hix.Data.Overrides (Overrides)
import Hix.Managed.Data.Envs (Envs)
import Hix.Managed.Data.Mutable (MutableVersions)
import Hix.Managed.Data.Packages (Packages)

data ProjectState =
  ProjectState {
    bounds :: Packages Bounds,
    versions :: Envs MutableVersions,
    initial :: Envs MutableVersions,
    overrides :: Envs Overrides,
    solver :: Envs Overrides,
    resolving :: Bool
  }
  deriving stock (Eq, Show, Generic)
  deriving anyclass (EncodeNix)

instance Pretty ProjectState where
  pretty ProjectState {..} =
    hang "bounds:" 2 (pretty bounds) $+$
    hang "versions:" 2 (pretty versions) $+$
    hang "initial:" 2 (pretty initial) $+$
    hang "overrides:" 2 (pretty overrides) $+$
    hang "solver:" 2 (pretty solver)

instance Default ProjectState where
  def =
    ProjectState {
      bounds = mempty,
      versions = mempty,
      initial = mempty,
      overrides = mempty,
      solver = mempty,
      resolving = False
    }