module Hix.Managed.Bump.App where import Hix.Data.Error (Error (Client)) import Hix.Data.Monad (M) import qualified Hix.Data.Options import Hix.Data.Options (BumpOptions (BumpOptions)) import Hix.Json (jsonConfigE) import Hix.Managed.Bump.Optimize (bumpOptimizeMain) import qualified Hix.Managed.Data.ProjectContextProto import Hix.Managed.Handlers.Build.Test (chooseHandlers) import Hix.Managed.ProjectContext (withProjectContext) bumpCli :: BumpOptions -> M () bumpCli :: BumpOptions -> M () bumpCli BumpOptions {common :: BumpOptions -> ManagedOptions common = ManagedOptions opts} = 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 opts.context BuildHandlers handlers <- IO BuildHandlers -> M BuildHandlers forall a. IO a -> M a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO BuildHandlers -> M BuildHandlers) -> IO BuildHandlers -> M BuildHandlers forall a b. (a -> b) -> a -> b $ StateFileConfig -> Envs EnvConfig -> Maybe BuildOutputsPrefix -> BuildConfig -> CabalConfig -> Maybe SpecialBuildHandlers -> IO BuildHandlers forall (m :: * -> *). MonadIO m => StateFileConfig -> Envs EnvConfig -> Maybe BuildOutputsPrefix -> BuildConfig -> CabalConfig -> Maybe SpecialBuildHandlers -> m BuildHandlers chooseHandlers ManagedOptions opts.stateFile ProjectContextProto context.envs ProjectContextProto context.buildOutputsPrefix ManagedOptions opts.project.build ManagedOptions opts.cabal ManagedOptions opts.handlers BuildHandlers -> ProjectOptions -> ProjectContextProto -> (ProjectContext -> M ProjectResult) -> M () withProjectContext BuildHandlers handlers ManagedOptions opts.project ProjectContextProto context (BuildHandlers -> ProjectContext -> M ProjectResult bumpOptimizeMain BuildHandlers handlers)