{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}

module Cardano.CLI.EraBased.Commands
  ( AnyEraCommand (..)
  , Cmds (..)
  , renderAnyEraCommand
  , renderCmds
  , pAnyEraCommand
  , pCmds
  )
where

import           Cardano.Api (ShelleyBasedEra (..))

import           Cardano.CLI.Commands.Address
import           Cardano.CLI.Commands.Key
import           Cardano.CLI.Commands.Node
import           Cardano.CLI.Environment
import           Cardano.CLI.EraBased.Commands.Genesis
import           Cardano.CLI.EraBased.Commands.Query
import           Cardano.CLI.EraBased.Commands.StakeAddress
import           Cardano.CLI.EraBased.Commands.StakePool
import           Cardano.CLI.EraBased.Commands.TextView
import           Cardano.CLI.EraBased.Commands.Transaction
import           Cardano.CLI.EraBased.Options.Common
import           Cardano.CLI.EraBased.Options.Genesis
import           Cardano.CLI.EraBased.Options.Governance (GovernanceCmds, pGovernanceCmds,
                   renderGovernanceCmds)
import           Cardano.CLI.EraBased.Options.Query
import           Cardano.CLI.EraBased.Options.StakeAddress
import           Cardano.CLI.EraBased.Options.StakePool
import           Cardano.CLI.EraBased.Options.TextView
import           Cardano.CLI.EraBased.Options.Transaction
import           Cardano.CLI.Options.Address
import           Cardano.CLI.Options.Key
import           Cardano.CLI.Options.Node

import           Data.Foldable
import           Data.Maybe
import           Data.Text (Text)
import           Data.Typeable (Typeable)
import           Options.Applicative (Parser)
import qualified Options.Applicative as Opt

data AnyEraCommand where
  AnyEraCommandOf :: Typeable era => ShelleyBasedEra era -> Cmds era -> AnyEraCommand

renderAnyEraCommand :: AnyEraCommand -> Text
renderAnyEraCommand :: AnyEraCommand -> Text
renderAnyEraCommand = \case
  AnyEraCommandOf ShelleyBasedEra era
_ Cmds era
cmd -> Cmds era -> Text
forall era. Cmds era -> Text
renderCmds Cmds era
cmd

data Cmds era
  = AddressCmds AddressCmds
  | KeyCmds KeyCmds
  | GenesisCmds (GenesisCmds era)
  | GovernanceCmds (GovernanceCmds era)
  | NodeCmds NodeCmds
  | QueryCmds (QueryCmds era)
  | StakeAddressCmds (StakeAddressCmds era)
  | StakePoolCmds (StakePoolCmds era)
  | TextViewCmds (TextViewCmds era)
  | TransactionCmds (TransactionCmds era)

renderCmds :: Cmds era -> Text
renderCmds :: forall era. Cmds era -> Text
renderCmds = \case
  AddressCmds AddressCmds
cmd ->
    AddressCmds -> Text
renderAddressCmds AddressCmds
cmd
  KeyCmds KeyCmds
cmd ->
    KeyCmds -> Text
renderKeyCmds KeyCmds
cmd
  GenesisCmds GenesisCmds era
cmd ->
    GenesisCmds era -> Text
forall era. GenesisCmds era -> Text
renderGenesisCmds GenesisCmds era
cmd
  GovernanceCmds GovernanceCmds era
cmd ->
    GovernanceCmds era -> Text
forall era. GovernanceCmds era -> Text
renderGovernanceCmds GovernanceCmds era
cmd
  NodeCmds NodeCmds
cmd ->
    NodeCmds -> Text
renderNodeCmds NodeCmds
cmd
  QueryCmds QueryCmds era
cmd ->
    QueryCmds era -> Text
forall era. QueryCmds era -> Text
renderQueryCmds QueryCmds era
cmd
  StakeAddressCmds StakeAddressCmds era
cmd ->
    StakeAddressCmds era -> Text
forall era. StakeAddressCmds era -> Text
renderStakeAddressCmds StakeAddressCmds era
cmd
  StakePoolCmds StakePoolCmds era
cmd ->
    StakePoolCmds era -> Text
forall era. StakePoolCmds era -> Text
renderStakePoolCmds StakePoolCmds era
cmd
  TextViewCmds TextViewCmds era
cmd ->
    TextViewCmds era -> Text
forall era. TextViewCmds era -> Text
renderTextViewCmds TextViewCmds era
cmd
  TransactionCmds TransactionCmds era
cmd ->
    TransactionCmds era -> Text
forall era. TransactionCmds era -> Text
renderTransactionCmds TransactionCmds era
cmd

pAnyEraCommand :: EnvCli -> Parser AnyEraCommand
pAnyEraCommand :: EnvCli -> Parser AnyEraCommand
pAnyEraCommand EnvCli
envCli =
  [Parser AnyEraCommand] -> Parser AnyEraCommand
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
    [ -- Note, byron is ommitted because there is already a legacy command group for it.

      String -> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a. String -> ParserInfo a -> Parser a
subParser String
"shelley" (ParserInfo AnyEraCommand -> Parser AnyEraCommand)
-> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a b. (a -> b) -> a -> b
$
        Parser AnyEraCommand
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (ShelleyBasedEra ShelleyEra -> Cmds ShelleyEra -> AnyEraCommand
forall era.
Typeable era =>
ShelleyBasedEra era -> Cmds era -> AnyEraCommand
AnyEraCommandOf ShelleyBasedEra ShelleyEra
ShelleyBasedEraShelley (Cmds ShelleyEra -> AnyEraCommand)
-> Parser (Cmds ShelleyEra) -> Parser AnyEraCommand
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra ShelleyEra -> EnvCli -> Parser (Cmds ShelleyEra)
forall era. ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds ShelleyBasedEra ShelleyEra
ShelleyBasedEraShelley EnvCli
envCli) (InfoMod AnyEraCommand -> ParserInfo AnyEraCommand)
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a b. (a -> b) -> a -> b
$
          String -> InfoMod AnyEraCommand
forall a. String -> InfoMod a
Opt.progDesc (String
"Shelley era commands" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
deprecationText)
    , String -> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a. String -> ParserInfo a -> Parser a
subParser String
"allegra" (ParserInfo AnyEraCommand -> Parser AnyEraCommand)
-> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a b. (a -> b) -> a -> b
$
        Parser AnyEraCommand
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (ShelleyBasedEra AllegraEra -> Cmds AllegraEra -> AnyEraCommand
forall era.
Typeable era =>
ShelleyBasedEra era -> Cmds era -> AnyEraCommand
AnyEraCommandOf ShelleyBasedEra AllegraEra
ShelleyBasedEraAllegra (Cmds AllegraEra -> AnyEraCommand)
-> Parser (Cmds AllegraEra) -> Parser AnyEraCommand
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra AllegraEra -> EnvCli -> Parser (Cmds AllegraEra)
forall era. ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds ShelleyBasedEra AllegraEra
ShelleyBasedEraAllegra EnvCli
envCli) (InfoMod AnyEraCommand -> ParserInfo AnyEraCommand)
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a b. (a -> b) -> a -> b
$
          String -> InfoMod AnyEraCommand
forall a. String -> InfoMod a
Opt.progDesc (String
"Allegra era commands" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
deprecationText)
    , String -> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a. String -> ParserInfo a -> Parser a
subParser String
"mary" (ParserInfo AnyEraCommand -> Parser AnyEraCommand)
-> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a b. (a -> b) -> a -> b
$
        Parser AnyEraCommand
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (ShelleyBasedEra MaryEra -> Cmds MaryEra -> AnyEraCommand
forall era.
Typeable era =>
ShelleyBasedEra era -> Cmds era -> AnyEraCommand
AnyEraCommandOf ShelleyBasedEra MaryEra
ShelleyBasedEraMary (Cmds MaryEra -> AnyEraCommand)
-> Parser (Cmds MaryEra) -> Parser AnyEraCommand
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra MaryEra -> EnvCli -> Parser (Cmds MaryEra)
forall era. ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds ShelleyBasedEra MaryEra
ShelleyBasedEraMary EnvCli
envCli) (InfoMod AnyEraCommand -> ParserInfo AnyEraCommand)
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a b. (a -> b) -> a -> b
$
          String -> InfoMod AnyEraCommand
forall a. String -> InfoMod a
Opt.progDesc (String
"Mary era commands" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
deprecationText)
    , String -> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a. String -> ParserInfo a -> Parser a
subParser String
"alonzo" (ParserInfo AnyEraCommand -> Parser AnyEraCommand)
-> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a b. (a -> b) -> a -> b
$
        Parser AnyEraCommand
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (ShelleyBasedEra AlonzoEra -> Cmds AlonzoEra -> AnyEraCommand
forall era.
Typeable era =>
ShelleyBasedEra era -> Cmds era -> AnyEraCommand
AnyEraCommandOf ShelleyBasedEra AlonzoEra
ShelleyBasedEraAlonzo (Cmds AlonzoEra -> AnyEraCommand)
-> Parser (Cmds AlonzoEra) -> Parser AnyEraCommand
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra AlonzoEra -> EnvCli -> Parser (Cmds AlonzoEra)
forall era. ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds ShelleyBasedEra AlonzoEra
ShelleyBasedEraAlonzo EnvCli
envCli) (InfoMod AnyEraCommand -> ParserInfo AnyEraCommand)
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a b. (a -> b) -> a -> b
$
          String -> InfoMod AnyEraCommand
forall a. String -> InfoMod a
Opt.progDesc (String
"Alonzo era commands" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
deprecationText)
    , String -> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a. String -> ParserInfo a -> Parser a
subParser String
"babbage" (ParserInfo AnyEraCommand -> Parser AnyEraCommand)
-> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a b. (a -> b) -> a -> b
$
        Parser AnyEraCommand
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (ShelleyBasedEra BabbageEra -> Cmds BabbageEra -> AnyEraCommand
forall era.
Typeable era =>
ShelleyBasedEra era -> Cmds era -> AnyEraCommand
AnyEraCommandOf ShelleyBasedEra BabbageEra
ShelleyBasedEraBabbage (Cmds BabbageEra -> AnyEraCommand)
-> Parser (Cmds BabbageEra) -> Parser AnyEraCommand
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra BabbageEra -> EnvCli -> Parser (Cmds BabbageEra)
forall era. ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds ShelleyBasedEra BabbageEra
ShelleyBasedEraBabbage EnvCli
envCli) (InfoMod AnyEraCommand -> ParserInfo AnyEraCommand)
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a b. (a -> b) -> a -> b
$
          String -> InfoMod AnyEraCommand
forall a. String -> InfoMod a
Opt.progDesc (String
"Babbage era commands" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
deprecationText)
    , String -> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a. String -> ParserInfo a -> Parser a
subParser String
"conway" (ParserInfo AnyEraCommand -> Parser AnyEraCommand)
-> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a b. (a -> b) -> a -> b
$
        Parser AnyEraCommand
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (ShelleyBasedEra ConwayEra -> Cmds ConwayEra -> AnyEraCommand
forall era.
Typeable era =>
ShelleyBasedEra era -> Cmds era -> AnyEraCommand
AnyEraCommandOf ShelleyBasedEra ConwayEra
ShelleyBasedEraConway (Cmds ConwayEra -> AnyEraCommand)
-> Parser (Cmds ConwayEra) -> Parser AnyEraCommand
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra ConwayEra -> EnvCli -> Parser (Cmds ConwayEra)
forall era. ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds ShelleyBasedEra ConwayEra
ShelleyBasedEraConway EnvCli
envCli) (InfoMod AnyEraCommand -> ParserInfo AnyEraCommand)
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a b. (a -> b) -> a -> b
$
          String -> InfoMod AnyEraCommand
forall a. String -> InfoMod a
Opt.progDesc String
"Conway era commands"
    , String -> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a. String -> ParserInfo a -> Parser a
subParser String
"latest" (ParserInfo AnyEraCommand -> Parser AnyEraCommand)
-> ParserInfo AnyEraCommand -> Parser AnyEraCommand
forall a b. (a -> b) -> a -> b
$
        Parser AnyEraCommand
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (ShelleyBasedEra ConwayEra -> Cmds ConwayEra -> AnyEraCommand
forall era.
Typeable era =>
ShelleyBasedEra era -> Cmds era -> AnyEraCommand
AnyEraCommandOf ShelleyBasedEra ConwayEra
ShelleyBasedEraConway (Cmds ConwayEra -> AnyEraCommand)
-> Parser (Cmds ConwayEra) -> Parser AnyEraCommand
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra ConwayEra -> EnvCli -> Parser (Cmds ConwayEra)
forall era. ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds ShelleyBasedEra ConwayEra
ShelleyBasedEraConway EnvCli
envCli) (InfoMod AnyEraCommand -> ParserInfo AnyEraCommand)
-> InfoMod AnyEraCommand -> ParserInfo AnyEraCommand
forall a b. (a -> b) -> a -> b
$
          String -> InfoMod AnyEraCommand
forall a. String -> InfoMod a
Opt.progDesc String
"Latest era commands (Conway)"
    ]

pCmds :: ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds :: forall era. ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds ShelleyBasedEra era
era EnvCli
envCli = do
  [Parser (Cmds era)] -> Parser (Cmds era)
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum ([Parser (Cmds era)] -> Parser (Cmds era))
-> [Parser (Cmds era)] -> Parser (Cmds era)
forall a b. (a -> b) -> a -> b
$
    [Maybe (Parser (Cmds era))] -> [Parser (Cmds era)]
forall a. [Maybe a] -> [a]
catMaybes
      [ Parser (Cmds era) -> Maybe (Parser (Cmds era))
forall a. a -> Maybe a
Just (AddressCmds -> Cmds era
forall era. AddressCmds -> Cmds era
AddressCmds (AddressCmds -> Cmds era)
-> Parser AddressCmds -> Parser (Cmds era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> EnvCli -> Parser AddressCmds
pAddressCmds EnvCli
envCli)
      , Parser (Cmds era) -> Maybe (Parser (Cmds era))
forall a. a -> Maybe a
Just (KeyCmds -> Cmds era
forall era. KeyCmds -> Cmds era
KeyCmds (KeyCmds -> Cmds era) -> Parser KeyCmds -> Parser (Cmds era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser KeyCmds
pKeyCmds)
      , (GenesisCmds era -> Cmds era)
-> Parser (GenesisCmds era) -> Parser (Cmds era)
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GenesisCmds era -> Cmds era
forall era. GenesisCmds era -> Cmds era
GenesisCmds (Parser (GenesisCmds era) -> Parser (Cmds era))
-> Maybe (Parser (GenesisCmds era)) -> Maybe (Parser (Cmds era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra era -> EnvCli -> Maybe (Parser (GenesisCmds era))
forall era.
ShelleyBasedEra era -> EnvCli -> Maybe (Parser (GenesisCmds era))
pGenesisCmds ShelleyBasedEra era
era EnvCli
envCli
      , (GovernanceCmds era -> Cmds era)
-> Parser (GovernanceCmds era) -> Parser (Cmds era)
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GovernanceCmds era -> Cmds era
forall era. GovernanceCmds era -> Cmds era
GovernanceCmds (Parser (GovernanceCmds era) -> Parser (Cmds era))
-> Maybe (Parser (GovernanceCmds era)) -> Maybe (Parser (Cmds era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra era -> Maybe (Parser (GovernanceCmds era))
forall era.
ShelleyBasedEra era -> Maybe (Parser (GovernanceCmds era))
pGovernanceCmds ShelleyBasedEra era
era
      , Parser (Cmds era) -> Maybe (Parser (Cmds era))
forall a. a -> Maybe a
Just (NodeCmds -> Cmds era
forall era. NodeCmds -> Cmds era
NodeCmds (NodeCmds -> Cmds era) -> Parser NodeCmds -> Parser (Cmds era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser NodeCmds
pNodeCmds)
      , (QueryCmds era -> Cmds era)
-> Parser (QueryCmds era) -> Parser (Cmds era)
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap QueryCmds era -> Cmds era
forall era. QueryCmds era -> Cmds era
QueryCmds (Parser (QueryCmds era) -> Parser (Cmds era))
-> Maybe (Parser (QueryCmds era)) -> Maybe (Parser (Cmds era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra era -> EnvCli -> Maybe (Parser (QueryCmds era))
forall era.
ShelleyBasedEra era -> EnvCli -> Maybe (Parser (QueryCmds era))
pQueryCmds ShelleyBasedEra era
era EnvCli
envCli
      , (StakeAddressCmds era -> Cmds era)
-> Parser (StakeAddressCmds era) -> Parser (Cmds era)
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap StakeAddressCmds era -> Cmds era
forall era. StakeAddressCmds era -> Cmds era
StakeAddressCmds (Parser (StakeAddressCmds era) -> Parser (Cmds era))
-> Maybe (Parser (StakeAddressCmds era))
-> Maybe (Parser (Cmds era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra era
-> EnvCli -> Maybe (Parser (StakeAddressCmds era))
forall era.
ShelleyBasedEra era
-> EnvCli -> Maybe (Parser (StakeAddressCmds era))
pStakeAddressCmds ShelleyBasedEra era
era EnvCli
envCli
      , (StakePoolCmds era -> Cmds era)
-> Parser (StakePoolCmds era) -> Parser (Cmds era)
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap StakePoolCmds era -> Cmds era
forall era. StakePoolCmds era -> Cmds era
StakePoolCmds (Parser (StakePoolCmds era) -> Parser (Cmds era))
-> Maybe (Parser (StakePoolCmds era)) -> Maybe (Parser (Cmds era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra era -> EnvCli -> Maybe (Parser (StakePoolCmds era))
forall era.
ShelleyBasedEra era -> EnvCli -> Maybe (Parser (StakePoolCmds era))
pStakePoolCmds ShelleyBasedEra era
era EnvCli
envCli
      , (TextViewCmds era -> Cmds era)
-> Parser (TextViewCmds era) -> Parser (Cmds era)
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TextViewCmds era -> Cmds era
forall era. TextViewCmds era -> Cmds era
TextViewCmds (Parser (TextViewCmds era) -> Parser (Cmds era))
-> Maybe (Parser (TextViewCmds era)) -> Maybe (Parser (Cmds era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Parser (TextViewCmds era))
forall era. Maybe (Parser (TextViewCmds era))
pTextViewCmds
      , (TransactionCmds era -> Cmds era)
-> Parser (TransactionCmds era) -> Parser (Cmds era)
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TransactionCmds era -> Cmds era
forall era. TransactionCmds era -> Cmds era
TransactionCmds (Parser (TransactionCmds era) -> Parser (Cmds era))
-> Maybe (Parser (TransactionCmds era))
-> Maybe (Parser (Cmds era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra era
-> EnvCli -> Maybe (Parser (TransactionCmds era))
forall era.
ShelleyBasedEra era
-> EnvCli -> Maybe (Parser (TransactionCmds era))
pTransactionCmds ShelleyBasedEra era
era EnvCli
envCli
      ]