Display error descriptions
All checks were successful
Build / audit (push) Successful in 8s
Build / test (push) Successful in 14m18s

This commit is contained in:
2024-08-20 22:36:43 +02:00
parent 42b9b671e1
commit 14cc805dcf
2 changed files with 47 additions and 8 deletions

View File

@ -11,12 +11,14 @@ module SlackBuilder.Trans
import Control.Monad.Trans.Reader (ReaderT(..), asks)
import Data.Text (Text)
import qualified Data.Text as Text
import SlackBuilder.Config
import Control.Monad.IO.Class (MonadIO(..))
import Control.Monad.Catch (MonadCatch(..), MonadThrow(..))
import Control.Exception (Exception(..))
import System.FilePath ((</>))
import Text.URI (URI)
import qualified Text.URI as URI
import qualified Codec.Compression.Lzma as Lzma
data SlackBuilderException
@ -26,7 +28,34 @@ data SlackBuilderException
deriving Show
instance Exception SlackBuilderException
where
displayException (UpdaterNotFound updateName) = Text.unpack
$ Text.concat ["Requested package \"", updateName, "\" was not found"]
displayException (HttpsUrlExpected givenURI) = Text.unpack
$ "Only https URLs are supported, got: " <> URI.render givenURI
displayException (LzmaDecompressionFailed Lzma.LzmaRetOK) =
"Operation completed successfully"
displayException (LzmaDecompressionFailed Lzma.LzmaRetStreamEnd) =
"End of stream was reached"
displayException (LzmaDecompressionFailed Lzma.LzmaRetUnsupportedCheck) =
"Cannot calculate the integrity check"
displayException (LzmaDecompressionFailed Lzma.LzmaRetGetCheck) =
"Integrity check type is now available"
displayException (LzmaDecompressionFailed Lzma.LzmaRetMemError) =
"Cannot allocate memory"
displayException (LzmaDecompressionFailed Lzma.LzmaRetMemlimitError) =
"Memory usage limit was reached"
displayException (LzmaDecompressionFailed Lzma.LzmaRetFormatError) =
"File format not recognized"
displayException (LzmaDecompressionFailed Lzma.LzmaRetOptionsError) =
"Invalid or unsupported options"
displayException (LzmaDecompressionFailed Lzma.LzmaRetDataError) =
"Data is corrupt"
displayException (LzmaDecompressionFailed Lzma.LzmaRetBufError) =
"No progress is possible"
displayException (LzmaDecompressionFailed Lzma.LzmaRetProgError) =
"Programming error"
newtype SlackBuilderT a = SlackBuilderT
{ runSlackBuilderT :: ReaderT Settings IO a
}