packages feed

stack-2.13.1: src/Stack/Types/GlobalOptsMonoid.hs

{-# LANGUAGE NoImplicitPrelude #-}

module Stack.Types.GlobalOptsMonoid
  ( GlobalOptsMonoid (..)
  ) where

import           Generics.Deriving.Monoid ( mappenddefault, memptydefault )
import           Stack.Prelude
import           Stack.Types.ConfigMonoid ( ConfigMonoid )
import           Stack.Types.DockerEntrypoint ( DockerEntrypoint )
import           Stack.Types.LockFileBehavior ( LockFileBehavior )
import           Stack.Types.Resolver ( AbstractResolver )

-- | Parsed global command-line options monoid.
data GlobalOptsMonoid = GlobalOptsMonoid
  { globalMonoidReExecVersion :: !(First String)
    -- ^ Expected re-exec in container version
  , globalMonoidDockerEntrypoint :: !(First DockerEntrypoint)
    -- ^ Data used when Stack is acting as a Docker entrypoint (internal use
    -- only)
  , globalMonoidLogLevel     :: !(First LogLevel)
    -- ^ Log level
  , globalMonoidTimeInLog    :: !FirstTrue
    -- ^ Whether to include timings in logs.
  , globalMonoidRSLInLog     :: !FirstFalse
    -- ^ Whether to include raw snapshot layer (RSL) in logs.
  , globalMonoidPlanInLog :: !FirstFalse
    -- ^ Whether to include debug information about the construction of the
    -- build plan in logs.
  , globalMonoidConfigMonoid :: !ConfigMonoid
    -- ^ Config monoid, for passing into 'loadConfig'
  , globalMonoidResolver     :: !(First (Unresolved AbstractResolver))
    -- ^ Resolver override
  , globalMonoidResolverRoot :: !(First FilePath)
    -- ^ root directory for resolver relative path
  , globalMonoidCompiler     :: !(First WantedCompiler)
    -- ^ Compiler override
  , globalMonoidTerminal     :: !(First Bool)
    -- ^ We're in a terminal?
  , globalMonoidStyles       :: !StylesUpdate
    -- ^ Stack's output styles
  , globalMonoidTermWidth    :: !(First Int)
    -- ^ Terminal width override
  , globalMonoidStackYaml    :: !(First FilePath)
    -- ^ Override project stack.yaml
  , globalMonoidLockFileBehavior :: !(First LockFileBehavior)
    -- ^ See 'globalLockFileBehavior'
  }
  deriving Generic

instance Semigroup GlobalOptsMonoid where
  (<>) = mappenddefault

instance Monoid GlobalOptsMonoid where
  mempty = memptydefault
  mappend = (<>)