Skip to content

Commit

Permalink
use ExitCode instead of ints
Browse files Browse the repository at this point in the history
  • Loading branch information
plt-amy committed Jul 18, 2022
1 parent 7a81d23 commit 03aa798
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 13 deletions.
3 changes: 1 addition & 2 deletions src/Cli/Extras/Logging.hs
Expand Up @@ -39,7 +39,6 @@ import Control.Monad.Log (Severity (..), WithSeverity (..), logMessage, runLoggi
import Control.Monad.Loops (iterateUntil)
import Control.Monad.Reader (MonadIO, ReaderT (..))
import Data.IORef (atomicModifyIORef', newIORef, readIORef, writeIORef)
import Data.Semigroup ((<>))
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.IO as T
Expand All @@ -58,7 +57,7 @@ newCliConfig
:: Severity
-> Bool
-> Bool
-> (e -> (Text, Int))
-> (e -> (Text, ExitCode))
-> IO (CliConfig e)
newCliConfig sev noColor noSpinner errorLogExitCode = do
level <- newIORef sev
Expand Down
2 changes: 0 additions & 2 deletions src/Cli/Extras/Process.hs
Expand Up @@ -35,7 +35,6 @@ module Cli.Extras.Process
import Control.Monad ((<=<), join, void)
import Control.Monad.Catch (MonadMask, bracketOnError)
import Control.Monad.Except (throwError)
import Control.Monad.Fail
import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Lens (Prism', review)
import qualified Data.ByteString as BS
Expand All @@ -44,7 +43,6 @@ import qualified Data.ByteString.UTF8 as BSU
import Data.Function (fix)
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Monoid ((<>))
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
Expand Down
2 changes: 0 additions & 2 deletions src/Cli/Extras/SubExcept.hs
Expand Up @@ -12,11 +12,9 @@ module Cli.Extras.SubExcept where

import Control.Lens (Prism', preview, review)
import Control.Monad.Error.Class (MonadError (..))
import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Reader
import Control.Monad.Catch (MonadThrow, MonadCatch, MonadMask)
import Control.Monad.Log
import Control.Monad.Fail

-- | Wrap a Prism' in a newtype to avoid impredicativity problems
newtype WrappedPrism' a b = WrappedPrism' { unWrappedPrism' :: Prism' a b }
Expand Down
2 changes: 0 additions & 2 deletions src/Cli/Extras/TerminalString.hs
Expand Up @@ -14,7 +14,6 @@ import Control.Monad (when)
import Control.Monad.Catch (bracket_)
import Control.Monad.IO.Class (liftIO)
import Control.Monad.Reader (MonadIO)
import Data.Semigroup ((<>))
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.IO as T
Expand Down Expand Up @@ -81,4 +80,3 @@ resetCode = setSGRCode [Reset]

getTerminalWidth :: IO (Maybe Int)
getTerminalWidth = fmap TerminalSize.width <$> TerminalSize.size

10 changes: 5 additions & 5 deletions src/Cli/Extras/Types.hs
Expand Up @@ -12,7 +12,6 @@ module Cli.Extras.Types where

import Control.Concurrent.MVar (MVar)
import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
import Control.Monad.Fail (MonadFail)
import Control.Monad.Log (LoggingT(..), MonadLog, Severity (..), WithSeverity (..), logMessage)
import Control.Monad.Reader (MonadIO, ReaderT (..), MonadReader (..), ask, mapReaderT)
import Control.Monad.Writer (WriterT)
Expand Down Expand Up @@ -47,7 +46,7 @@ type CliThrow e m = MonadError e m
putLog :: CliLog m => Severity -> Text -> m ()
putLog sev = logMessage . Output_Log . WithSeverity sev

newtype DieT e m a = DieT { unDieT :: ReaderT (e -> (Text, Int)) (LoggingT Output m) a }
newtype DieT e m a = DieT { unDieT :: ReaderT (e -> (Text, ExitCode)) (LoggingT Output m) a }
deriving
( Functor, Applicative, Monad, MonadIO, MonadFail
, MonadThrow, MonadCatch, MonadMask
Expand All @@ -69,7 +68,7 @@ instance MonadIO m => MonadError e (DieT e m) where
handler <- DieT ask
let (output, exitCode) = handler e
putLog Alert output
liftIO $ exitWith $ ExitFailure exitCode
liftIO $ exitWith $ exitCode

-- Cannot catch
catchError m _ = m
Expand All @@ -89,8 +88,9 @@ data CliConfig e = CliConfig
_cliConfig_tipDisplayed :: IORef Bool
, -- | Stack of logs from nested spinners
_cliConfig_spinnerStack :: IORef ([Bool], [TerminalString])
, -- | Failure handler. How to log error and what exit status to use.
_cliConfig_errorLogExitCode :: e -> (Text, Int)
, -- | Handler for failures. Determines, given an error, what message
-- should be printed, and what the exit status should be.
_cliConfig_errorLogExitCode :: e -> (Text, ExitCode)
, -- | Theme strings for spinners
_cliConfig_theme :: CliTheme
}
Expand Down

0 comments on commit 03aa798

Please sign in to comment.