module Chiasma.Data.TmuxError where

import Chiasma.Codec.Decode (TmuxDecodeError)
import Text.ParserCombinators.Parsec (ParseError)

import Chiasma.Data.Cmd (Cmds(..))

data TmuxError =
  ProcessFailed {
    TmuxError -> Cmds
processFailedCmds :: Cmds,
    TmuxError -> Text
processFailedReason :: Text
    }
  |
  OutputParsingFailed {
    TmuxError -> Cmds
parsingFailedCmds :: Cmds,
    TmuxError -> [Text]
parsingFailedOutput :: [Text],
    TmuxError -> ParseError
parsingFailedError :: ParseError
  }
  |
  NoOutput Cmds
  |
  DecodingFailed {
    TmuxError -> Cmds
decodingFailedCmds :: Cmds,
    TmuxError -> Text
decodingFailedOutput :: Text,
    TmuxError -> TmuxDecodeError
decodingFailedError :: TmuxDecodeError
  }
  |
  InvalidOutput {
    TmuxError -> Text
invalidOutputReason :: Text,
    TmuxError -> Text
invalidOutputCommand :: Text
  }
  |
  CommandFailed {
    TmuxError -> Cmds
commandFailedCmds :: Cmds,
    TmuxError -> [Text]
commandFailedError :: [Text]
  }
  deriving (TmuxError -> TmuxError -> Bool
(TmuxError -> TmuxError -> Bool)
-> (TmuxError -> TmuxError -> Bool) -> Eq TmuxError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TmuxError -> TmuxError -> Bool
$c/= :: TmuxError -> TmuxError -> Bool
== :: TmuxError -> TmuxError -> Bool
$c== :: TmuxError -> TmuxError -> Bool
Eq, Int -> TmuxError -> ShowS
[TmuxError] -> ShowS
TmuxError -> String
(Int -> TmuxError -> ShowS)
-> (TmuxError -> String)
-> ([TmuxError] -> ShowS)
-> Show TmuxError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TmuxError] -> ShowS
$cshowList :: [TmuxError] -> ShowS
show :: TmuxError -> String
$cshow :: TmuxError -> String
showsPrec :: Int -> TmuxError -> ShowS
$cshowsPrec :: Int -> TmuxError -> ShowS
Show)

deepPrisms ''TmuxError