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 :: (LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult) -> LowerOptions -> M () lowerCli LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult main opts :: LowerOptions opts@LowerOptions {ManagedOptions common :: ManagedOptions common :: LowerOptions -> ManagedOptions common} = do ProjectContextProto context <- (Text -> Error) -> Either ProjectContextProto JsonConfig -> M ProjectContextProto forall a. FromJSON a => (Text -> Error) -> Either a JsonConfig -> M a jsonConfigE Text -> Error Client ManagedOptions common.context BuildHandlers handlers <- StateFileConfig -> Envs EnvConfig -> Maybe BuildOutputsPrefix -> BuildConfig -> CabalConfig -> Maybe SpecialBuildHandlers -> M BuildHandlers forall (m :: * -> *). MonadIO m => StateFileConfig -> Envs EnvConfig -> Maybe BuildOutputsPrefix -> BuildConfig -> CabalConfig -> Maybe SpecialBuildHandlers -> m BuildHandlers chooseHandlers ManagedOptions common.stateFile ProjectContextProto context.envs ProjectContextProto context.buildOutputsPrefix ManagedOptions common.project.build ManagedOptions common.cabal ManagedOptions common.handlers BuildHandlers -> ProjectOptions -> ProjectContextProto -> (ProjectContext -> M ProjectResult) -> M () withProjectContext BuildHandlers handlers ManagedOptions common.project ProjectContextProto context (LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult main LowerConfig conf BuildHandlers handlers) where conf :: LowerConfig conf = LowerOptions -> LowerConfig lowerConfig LowerOptions opts lowerInitCli :: LowerOptions -> M () lowerInitCli :: LowerOptions -> M () lowerInitCli = (LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult) -> LowerOptions -> M () lowerCli LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult lowerInitMain lowerOptimizeCli :: LowerOptions -> M () lowerOptimizeCli :: LowerOptions -> M () lowerOptimizeCli = (LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult) -> LowerOptions -> M () lowerCli ((BuildHandlers -> ProjectContext -> M ProjectResult) -> LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult forall a b. a -> b -> a const BuildHandlers -> ProjectContext -> M ProjectResult lowerOptimizeMain) lowerStabilizeCli :: LowerOptions -> M () lowerStabilizeCli :: LowerOptions -> M () lowerStabilizeCli = (LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult) -> LowerOptions -> M () lowerCli ((BuildHandlers -> ProjectContext -> M ProjectResult) -> LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult forall a b. a -> b -> a const BuildHandlers -> ProjectContext -> M ProjectResult lowerStabilizeMain) lowerAutoCli :: LowerOptions -> M () lowerAutoCli :: LowerOptions -> M () lowerAutoCli = (LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult) -> LowerOptions -> M () lowerCli LowerConfig -> BuildHandlers -> ProjectContext -> M ProjectResult lowerAutoMain