Skip to content

Commit

Permalink
introducing experimental eras code
Browse files Browse the repository at this point in the history
  • Loading branch information
carbolymer committed Sep 3, 2024
1 parent c9fbcda commit b32cf38
Show file tree
Hide file tree
Showing 21 changed files with 137 additions and 2,220 deletions.
6 changes: 6 additions & 0 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,9 @@ write-ghc-environment-files: always
-- IMPORTANT
-- Do NOT add more source-repository-package stanzas here unless they are strictly
-- temporary! Please read the section in CONTRIBUTING about updating dependencies.

source-repository-package
type: git
location: https://github.com/input-output-hk/cardano-api
tag: cf2b5eb446eefedf6b2667d5cd0b0bb2ffb7815e
subdir: cardano-api
18 changes: 6 additions & 12 deletions cardano-cli/src/Cardano/CLI/Environment.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,17 @@
-- | This module defines constants derived from the environment.
module Cardano.CLI.Environment
( EnvCli (..)
, envCliAnyShelleyBasedEra
, envCliAnyShelleyToBabbageEra
, envCliAnyEon
, getEnvCli
, getEnvNetworkId
, getEnvSocketPath
)
where

import Cardano.Api (AnyCardanoEra (..), CardanoEra (..), EraInEon (..), NetworkId (..),
NetworkMagic (..), ShelleyBasedEra (..), ShelleyToBabbageEra (..),
forEraInEonMaybe)
import Cardano.Api (AnyCardanoEra (..), CardanoEra (..), Eon, EraInEon (..),
NetworkId (..), NetworkMagic (..), forEraInEonMaybe)

import Data.Typeable
import Data.Word (Word32)
import qualified System.Environment as IO
import qualified System.IO as IO
Expand All @@ -40,13 +39,8 @@ getEnvCli = do
, envCliAnyCardanoEra = mCardanoEra
}

envCliAnyShelleyBasedEra :: EnvCli -> Maybe (EraInEon ShelleyBasedEra)
envCliAnyShelleyBasedEra envCli = do
AnyCardanoEra era <- envCliAnyCardanoEra envCli
forEraInEonMaybe era EraInEon

envCliAnyShelleyToBabbageEra :: EnvCli -> Maybe (EraInEon ShelleyToBabbageEra)
envCliAnyShelleyToBabbageEra envCli = do
envCliAnyEon :: Typeable eon => Eon eon => EnvCli -> Maybe (EraInEon eon)
envCliAnyEon envCli = do
AnyCardanoEra era <- envCliAnyCardanoEra envCli
forEraInEonMaybe era EraInEon

Expand Down
16 changes: 8 additions & 8 deletions cardano-cli/src/Cardano/CLI/EraBased/Commands.hs
Original file line number Diff line number Diff line change
Expand Up @@ -113,17 +113,17 @@ pAnyEraCommand envCli =
]

pCmds :: ShelleyBasedEra era -> EnvCli -> Parser (Cmds era)
pCmds era envCli =
pCmds sbe envCli =
asum $
catMaybes
[ fmap AddressCmds <$> pAddressCmds (toCardanoEra era) envCli
[ fmap AddressCmds <$> pAddressCmds (toCardanoEra sbe) envCli
, fmap KeyCmds <$> pKeyCmds
, fmap GenesisCmds <$> pGenesisCmds (toCardanoEra era) envCli
, fmap GovernanceCmds <$> pGovernanceCmds (toCardanoEra era)
, fmap GenesisCmds <$> pGenesisCmds (toCardanoEra sbe) envCli
, fmap GovernanceCmds <$> pGovernanceCmds (toCardanoEra sbe)
, fmap NodeCmds <$> pNodeCmds
, fmap QueryCmds <$> pQueryCmds (toCardanoEra era) envCli
, fmap StakeAddressCmds <$> pStakeAddressCmds (toCardanoEra era) envCli
, fmap StakePoolCmds <$> pStakePoolCmds (toCardanoEra era) envCli
, fmap QueryCmds <$> pQueryCmds (toCardanoEra sbe) envCli
, fmap StakeAddressCmds <$> pStakeAddressCmds (toCardanoEra sbe) envCli
, fmap StakePoolCmds <$> pStakePoolCmds (toCardanoEra sbe) envCli
, fmap TextViewCmds <$> pTextViewCmds
, fmap TransactionCmds <$> pTransactionCmds era envCli
, fmap TransactionCmds <$> pTransactionCmds sbe envCli
]
3 changes: 2 additions & 1 deletion cardano-cli/src/Cardano/CLI/EraBased/Commands/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ module Cardano.CLI.EraBased.Commands.Transaction
)
where

import qualified Cardano.Api.Experimental as Exp
import Cardano.Api.Ledger (Coin)
import Cardano.Api.Shelley

Expand Down Expand Up @@ -87,7 +88,7 @@ data TransactionBuildRawCmdArgs era = TransactionBuildRawCmdArgs

-- | Like 'TransactionBuildRaw' but without the fee, and with a change output.
data TransactionBuildCmdArgs era = TransactionBuildCmdArgs
{ eon :: !(ShelleyBasedEra era)
{ era :: !(Exp.Era era)
, nodeSocketPath :: !SocketPath
, consensusModeParams :: !ConsensusModeParams
, networkId :: !NetworkId
Expand Down
19 changes: 9 additions & 10 deletions cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ import Cardano.Api
import qualified Cardano.Api.Ledger as L
import Cardano.Api.Shelley

import Cardano.CLI.Environment (EnvCli (..), envCliAnyShelleyBasedEra,
envCliAnyShelleyToBabbageEra)
import Cardano.CLI.Environment (EnvCli (..), envCliAnyEon)
import Cardano.CLI.Parser
import Cardano.CLI.Read
import Cardano.CLI.Types.Common
Expand Down Expand Up @@ -379,7 +378,7 @@ pAnyShelleyBasedEra envCli =
, Opt.flag' (EraInEon ShelleyBasedEraConway) $
mconcat [Opt.long "conway-era", Opt.help "Specify the Conway era"]
]
, maybeToList $ pure <$> envCliAnyShelleyBasedEra envCli
, maybeToList $ pure <$> envCliAnyEon envCli
, pure . pure $ EraInEon ShelleyBasedEraBabbage
]

Expand All @@ -402,7 +401,7 @@ pAnyShelleyToBabbageEra envCli =
, Opt.flag' (EraInEon ShelleyToBabbageEraBabbage) $
mconcat [Opt.long "babbage-era", Opt.help $ "Specify the Babbage era (default)" <> deprecationText]
]
, maybeToList $ pure <$> envCliAnyShelleyToBabbageEra envCli
, maybeToList $ pure <$> envCliAnyEon envCli
, pure . pure $ EraInEon ShelleyToBabbageEraBabbage
]

Expand All @@ -417,7 +416,7 @@ pShelleyBasedShelley envCli =
, maybeToList $
fmap pure $
mfilter (== EraInEon ShelleyBasedEraShelley) $
envCliAnyShelleyBasedEra envCli
envCliAnyEon envCli
]

pShelleyBasedAllegra :: EnvCli -> Parser (EraInEon ShelleyBasedEra)
Expand All @@ -431,7 +430,7 @@ pShelleyBasedAllegra envCli =
, maybeToList $
fmap pure $
mfilter (== EraInEon ShelleyBasedEraAllegra) $
envCliAnyShelleyBasedEra envCli
envCliAnyEon envCli
]

pShelleyBasedMary :: EnvCli -> Parser (EraInEon ShelleyBasedEra)
Expand All @@ -445,7 +444,7 @@ pShelleyBasedMary envCli =
, maybeToList $
fmap pure $
mfilter (== EraInEon ShelleyBasedEraMary) $
envCliAnyShelleyBasedEra envCli
envCliAnyEon envCli
]

pShelleyBasedAlonzo :: EnvCli -> Parser (EraInEon ShelleyBasedEra)
Expand All @@ -459,7 +458,7 @@ pShelleyBasedAlonzo envCli =
, maybeToList $
fmap pure $
mfilter (== EraInEon ShelleyBasedEraAlonzo) $
envCliAnyShelleyBasedEra envCli
envCliAnyEon envCli
]

pShelleyBasedBabbage :: EnvCli -> Parser (EraInEon ShelleyBasedEra)
Expand All @@ -473,7 +472,7 @@ pShelleyBasedBabbage envCli =
, maybeToList $
fmap pure $
mfilter (== EraInEon ShelleyBasedEraBabbage) $
envCliAnyShelleyBasedEra envCli
envCliAnyEon envCli
]

pShelleyBasedConway :: EnvCli -> Parser (EraInEon ShelleyBasedEra)
Expand All @@ -487,7 +486,7 @@ pShelleyBasedConway envCli =
, maybeToList $
fmap pure $
mfilter (== EraInEon ShelleyBasedEraConway) $
envCliAnyShelleyBasedEra envCli
envCliAnyEon envCli
]

pFileOutDirection :: String -> String -> Parser (File a Out)
Expand Down
17 changes: 10 additions & 7 deletions cardano-cli/src/Cardano/CLI/EraBased/Options/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@ module Cardano.CLI.EraBased.Options.Transaction
where

import Cardano.Api hiding (QueryInShelleyBasedEra (..))
import qualified Cardano.Api.Experimental as Exp

import Cardano.CLI.Environment (EnvCli (..))
import Cardano.CLI.EraBased.Commands.Transaction
import Cardano.CLI.EraBased.Commands.Transaction hiding (era)
import Cardano.CLI.EraBased.Options.Common
import Cardano.CLI.Types.Common

Expand Down Expand Up @@ -147,11 +148,13 @@ pScriptValidity =
]
]

pTransactionBuildCmd :: ShelleyBasedEra era -> EnvCli -> Maybe (Parser (TransactionCmds era))
pTransactionBuildCmd era envCli = do
pTransactionBuildCmd
:: forall era. ShelleyBasedEra era -> EnvCli -> Maybe (Parser (TransactionCmds era))
pTransactionBuildCmd sbe envCli = do
beo <- forEraMaybeEon (toCardanoEra sbe)
pure $
subParser "build" $
Opt.info (pCmd era) $
Opt.info (pCmd beo) $
Opt.progDescDoc $
Just $
mconcat
Expand All @@ -167,10 +170,10 @@ pTransactionBuildCmd era envCli = do
]
]
where
pCmd :: ShelleyBasedEra era -> Parser (TransactionCmds era)
pCmd sbe =
pCmd :: BabbageEraOnwards era -> Parser (TransactionCmds era)
pCmd beo = do
fmap TransactionBuildCmd $
TransactionBuildCmdArgs sbe
TransactionBuildCmdArgs (Exp.babbageEraOnwardsToEra beo)
<$> pSocketPath envCli
<*> pConsensusModeParams
<*> pNetworkId envCli
Expand Down
Loading

0 comments on commit b32cf38

Please sign in to comment.