{-# LANGUAGE DataKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Cardano.CLI.EraIndependent.Debug.CheckNodeConfiguration.Run (runCheckNodeConfig) where
import Cardano.Api
import Cardano.CLI.Compatible.Exception
import Cardano.CLI.EraIndependent.Debug.CheckNodeConfiguration.Command
import Cardano.CLI.Type.Error.DebugCmdError
import System.IO qualified as IO
runCheckNodeConfig :: CheckNodeConfigCmdArgs -> CIO e ()
runCheckNodeConfig :: forall e. CheckNodeConfigCmdArgs -> CIO e ()
runCheckNodeConfig (CheckNodeConfigCmdArgs NodeConfigFile 'In
configFile) = do
_ <-
ExceptT DebugCmdError IO (NodeConfig, [ConfigWarning])
-> RIO e (NodeConfig, [ConfigWarning])
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
ExceptT e IO a -> m a
fromExceptTCli (ExceptT DebugCmdError IO (NodeConfig, [ConfigWarning])
-> RIO e (NodeConfig, [ConfigWarning]))
-> (ExceptT NodeConfigError IO (NodeConfig, [ConfigWarning])
-> ExceptT DebugCmdError IO (NodeConfig, [ConfigWarning]))
-> ExceptT NodeConfigError IO (NodeConfig, [ConfigWarning])
-> RIO e (NodeConfig, [ConfigWarning])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (NodeConfigError -> DebugCmdError)
-> ExceptT NodeConfigError IO (NodeConfig, [ConfigWarning])
-> ExceptT DebugCmdError IO (NodeConfig, [ConfigWarning])
forall e' (t :: (* -> *) -> * -> *) (m :: * -> *) e a.
MonadTransError e' t m =>
(e -> e') -> ExceptT e m a -> t m a
modifyError (String -> NodeConfigError -> DebugCmdError
DebugNodeConfigReadCmdError String
configFilePath) (ExceptT NodeConfigError IO (NodeConfig, [ConfigWarning])
-> RIO e (NodeConfig, [ConfigWarning]))
-> ExceptT NodeConfigError IO (NodeConfig, [ConfigWarning])
-> RIO e (NodeConfig, [ConfigWarning])
forall a b. (a -> b) -> a -> b
$
NodeConfigFile 'In
-> ExceptT NodeConfigError IO (NodeConfig, [ConfigWarning])
forall (m :: * -> *).
(MonadError NodeConfigError m, MonadIO m) =>
NodeConfigFile 'In -> m (NodeConfig, [ConfigWarning])
readNodeConfig NodeConfigFile 'In
configFile
liftIO $
IO.hPutStrLn IO.stderr $
"Successfully checked node configuration file: " <> configFilePath
where
configFilePath :: String
configFilePath = NodeConfigFile 'In -> String
forall content (direction :: FileDirection).
File content direction -> String
unFile NodeConfigFile 'In
configFile