@@ -18,6 +18,7 @@ import qualified Control.Concurrent.Class.MonadSTM.Strict as STM
1818import Control.Exception (SomeException )
1919import Control.Monad (forM , unless )
2020import Control.Monad.Class.MonadAsync (MonadAsync (async , wait , waitCatch ))
21+ import Control.Monad.Except (throwError )
2122import Control.Monad.Trans.Except (ExceptT )
2223import Control.Monad.Trans.Except.Extra (left )
2324import Control.Tracer (Tracer (.. ))
@@ -28,7 +29,9 @@ import qualified Network.Socket as Socket
2829import qualified System.Exit as IO
2930import qualified System.IO as IO
3031
31- newtype PingClientCmdError = PingClientCmdError [(AddrInfo , SomeException )]
32+ data PingClientCmdError
33+ = PingClientCmdError [(AddrInfo , SomeException )]
34+ | PingClientMisconfigurationError String
3235
3336maybeHostEndPoint :: EndPoint -> Maybe String
3437maybeHostEndPoint = \ case
@@ -58,6 +61,9 @@ pingClient stdout stderr cmd = CNP.pingClient stdout stderr opts
5861 }
5962
6063runPingCmd :: PingCmd -> ExceptT PingClientCmdError IO ()
64+ runPingCmd options
65+ | Just err <- getConfigurationError options =
66+ throwError $ PingClientMisconfigurationError err
6167runPingCmd options = do
6268 let hints = Socket. defaultHints{Socket. addrSocketType = Socket. Stream }
6369
@@ -120,3 +126,4 @@ runPingCmd options = do
120126renderPingClientCmdError :: PingClientCmdError -> Doc ann
121127renderPingClientCmdError = \ case
122128 PingClientCmdError es -> mconcat $ List. intersperse " \n " $ pshow <$> es
129+ PingClientMisconfigurationError err -> pretty err
0 commit comments