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.BuildConfig 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 {$sel:common:BumpOptions :: 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 -> Maybe BuildTimeout -> CabalConfig -> Maybe SpecialBuildHandlers -> IO BuildHandlers forall (m :: * -> *). MonadIO m => StateFileConfig -> Envs EnvConfig -> Maybe BuildOutputsPrefix -> Maybe BuildTimeout -> CabalConfig -> Maybe SpecialBuildHandlers -> m BuildHandlers chooseHandlers ManagedOptions opts.stateFile ProjectContextProto context.envs ProjectContextProto context.buildOutputsPrefix ManagedOptions opts.project.build.timeout 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)