{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Cardano.CLI.Type.Error.KeyCmdError
( KeyCmdError (..)
, renderKeyCmdError
)
where
import Cardano.Api
import Cardano.CLI.Type.Key
data KeyCmdError
= KeyCmdReadMnemonicFileError !(FileError ())
| KeyCmdWriteFileError !(FileError ())
| KeyCmdMnemonicError MnemonicToSigningKeyError
| KeyCmdWrongNumOfMnemonics
!Int
!Int
| KeyCmdWrongKeyTypeError
| KeyCmdExpectedExtendedVerificationKey SomeAddressVerificationKey
| KeyCmdVerificationKeyReadError VerificationKeyTextOrFileError
deriving Int -> KeyCmdError -> ShowS
[KeyCmdError] -> ShowS
KeyCmdError -> String
(Int -> KeyCmdError -> ShowS)
-> (KeyCmdError -> String)
-> ([KeyCmdError] -> ShowS)
-> Show KeyCmdError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> KeyCmdError -> ShowS
showsPrec :: Int -> KeyCmdError -> ShowS
$cshow :: KeyCmdError -> String
show :: KeyCmdError -> String
$cshowList :: [KeyCmdError] -> ShowS
showList :: [KeyCmdError] -> ShowS
Show
instance Error KeyCmdError where
prettyError :: forall ann. KeyCmdError -> Doc ann
prettyError = KeyCmdError -> Doc ann
forall ann. KeyCmdError -> Doc ann
renderKeyCmdError
renderKeyCmdError :: KeyCmdError -> Doc ann
renderKeyCmdError :: forall ann. KeyCmdError -> Doc ann
renderKeyCmdError KeyCmdError
err =
case KeyCmdError
err of
KeyCmdReadMnemonicFileError FileError ()
fileErr ->
Doc ann
"Error reading mnemonic file: " Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> FileError () -> Doc ann
forall e ann. Error e => e -> Doc ann
forall ann. FileError () -> Doc ann
prettyError FileError ()
fileErr
KeyCmdWriteFileError FileError ()
fileErr ->
FileError () -> Doc ann
forall e ann. Error e => e -> Doc ann
forall ann. FileError () -> Doc ann
prettyError FileError ()
fileErr
KeyCmdMnemonicError MnemonicToSigningKeyError
mnemonicErr ->
Doc ann
"Error converting the mnemonic into a key: " Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> MnemonicToSigningKeyError -> Doc ann
forall e ann. Error e => e -> Doc ann
forall ann. MnemonicToSigningKeyError -> Doc ann
prettyError MnemonicToSigningKeyError
mnemonicErr
KeyCmdWrongNumOfMnemonics Int
expected Int
actual ->
Doc ann
"Internal error: expected " Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann
forall ann. Int -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Int
expected Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
" mnemonics, but got " Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Int -> Doc ann
forall ann. Int -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Int
actual
KeyCmdError
KeyCmdWrongKeyTypeError ->
Doc ann
"Please use a signing key file when converting ITN BIP32 or Extended keys"
KeyCmdVerificationKeyReadError VerificationKeyTextOrFileError
e ->
VerificationKeyTextOrFileError -> Doc ann
forall ann. VerificationKeyTextOrFileError -> Doc ann
renderVerificationKeyTextOrFileError VerificationKeyTextOrFileError
e
KeyCmdExpectedExtendedVerificationKey SomeAddressVerificationKey
someVerKey ->
Doc ann
"Expected an extended verification key but got: "
Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Text -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Text -> Doc ann
pretty (SomeAddressVerificationKey -> Text
renderSomeAddressVerificationKey SomeAddressVerificationKey
someVerKey)