hix-0.7.2: lib/Hix/Managed/Lower/App.hs
module Hix.Managed.Lower.App where
import Hix.Data.Error (Error (Client))
import Hix.Data.Monad (M)
import qualified Hix.Data.Options
import Hix.Data.Options (LowerOptions (LowerOptions))
import Hix.Json (jsonConfigE)
import Hix.Managed.Data.LowerConfig (LowerConfig, lowerConfig)
import Hix.Managed.Data.ProjectContext (ProjectContext)
import qualified Hix.Managed.Data.ProjectContextProto
import Hix.Managed.Data.ProjectResult (ProjectResult)
import Hix.Managed.Handlers.Build (BuildHandlers)
import Hix.Managed.Handlers.Build.Test (chooseHandlers)
import Hix.Managed.Lower.Auto (lowerAutoMain)
import Hix.Managed.Lower.Init (lowerInitMain)
import Hix.Managed.Lower.Optimize (lowerOptimizeMain)
import Hix.Managed.Lower.Stabilize (lowerStabilizeMain)
import Hix.Managed.ProjectContext (withProjectContext)
lowerCli ::
(LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult) ->
LowerOptions ->
M ()
lowerCli main opts@LowerOptions {common} = do
context <- jsonConfigE Client common.context
handlers <- chooseHandlers common.stateFile context.envs context.buildOutputsPrefix common.project.build common.cabal
common.handlers
withProjectContext handlers common.project context (main conf handlers)
where
conf = lowerConfig opts
lowerInitCli :: LowerOptions -> M ()
lowerInitCli = lowerCli lowerInitMain
lowerOptimizeCli :: LowerOptions -> M ()
lowerOptimizeCli = lowerCli (const lowerOptimizeMain)
lowerStabilizeCli :: LowerOptions -> M ()
lowerStabilizeCli = lowerCli (const lowerStabilizeMain)
lowerAutoCli :: LowerOptions -> M ()
lowerAutoCli = lowerCli lowerAutoMain