{-# LANGUAGE LambdaCase #-}

module Cardano.CLI.Legacy.Run
  ( runLegacyCmds
  )
where

import Cardano.CLI.Legacy.Genesis.Run
import Cardano.CLI.Legacy.Governance.Run
import Cardano.CLI.Legacy.Option
import Cardano.CLI.Type.Error.CmdError

import Control.Monad.Trans.Except (ExceptT)
import Control.Monad.Trans.Except.Extra (firstExceptT)

runLegacyCmds :: LegacyCmds -> ExceptT CmdError IO ()
runLegacyCmds :: LegacyCmds -> ExceptT CmdError IO ()
runLegacyCmds = \case
  LegacyGenesisCmds LegacyGenesisCmds
cmd -> (GenesisCmdError -> CmdError)
-> ExceptT GenesisCmdError IO () -> ExceptT CmdError IO ()
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT GenesisCmdError -> CmdError
CmdGenesisError (ExceptT GenesisCmdError IO () -> ExceptT CmdError IO ())
-> ExceptT GenesisCmdError IO () -> ExceptT CmdError IO ()
forall a b. (a -> b) -> a -> b
$ LegacyGenesisCmds -> ExceptT GenesisCmdError IO ()
runLegacyGenesisCmds LegacyGenesisCmds
cmd
  LegacyGovernanceCmds LegacyGovernanceCmds
cmd -> (GovernanceCmdError -> CmdError)
-> ExceptT GovernanceCmdError IO () -> ExceptT CmdError IO ()
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT GovernanceCmdError -> CmdError
CmdGovernanceCmdError (ExceptT GovernanceCmdError IO () -> ExceptT CmdError IO ())
-> ExceptT GovernanceCmdError IO () -> ExceptT CmdError IO ()
forall a b. (a -> b) -> a -> b
$ LegacyGovernanceCmds -> ExceptT GovernanceCmdError IO ()
runLegacyGovernanceCmds LegacyGovernanceCmds
cmd