Skip to content

Commit cff25f7

Browse files
committed
Move pConsensusModeParams to re-usable location
1 parent 41ac63c commit cff25f7

File tree

4 files changed

+66
-96
lines changed

4 files changed

+66
-96
lines changed

cardano-cli/src/Cardano/CLI/Common/Parsers.hs

+59-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
module Cardano.CLI.Common.Parsers
22
( pNetworkId
3+
, pConsensusModeParams
34
) where
45

5-
import Cardano.Api (NetworkId (..), NetworkMagic (..), bounded)
6+
import Cardano.Api (AnyConsensusModeParams (..), ConsensusModeParams (..),
7+
EpochSlots (..), NetworkId (..), NetworkMagic (..), bounded)
68

79
import Data.Foldable
10+
import Data.Word (Word64)
811
import Options.Applicative (Parser)
912
import qualified Options.Applicative as Opt
1013

@@ -20,3 +23,58 @@ pNetworkId = asum
2023
, Opt.help "Specify a testnet magic id."
2124
]
2225
]
26+
27+
pConsensusModeParams :: Parser AnyConsensusModeParams
28+
pConsensusModeParams = asum
29+
[ pShelleyMode *> pShelleyConsensusMode
30+
, pByronMode *> pByronConsensusMode
31+
, pCardanoMode *> pCardanoConsensusMode
32+
, pDefaultConsensusMode
33+
]
34+
where
35+
pShelleyMode :: Parser ()
36+
pShelleyMode =
37+
Opt.flag' () $ mconcat
38+
[ Opt.long "shelley-mode"
39+
, Opt.help "For talking to a node running in Shelley-only mode."
40+
]
41+
42+
pByronMode :: Parser ()
43+
pByronMode =
44+
Opt.flag' () $ mconcat
45+
[ Opt.long "byron-mode"
46+
, Opt.help "For talking to a node running in Byron-only mode."
47+
]
48+
49+
pCardanoMode :: Parser ()
50+
pCardanoMode =
51+
Opt.flag' () $ mconcat
52+
[ Opt.long "cardano-mode"
53+
, Opt.help "For talking to a node running in full Cardano mode (default)."
54+
]
55+
56+
pCardanoConsensusMode :: Parser AnyConsensusModeParams
57+
pCardanoConsensusMode = AnyConsensusModeParams . CardanoModeParams <$> pEpochSlots
58+
59+
pByronConsensusMode :: Parser AnyConsensusModeParams
60+
pByronConsensusMode = AnyConsensusModeParams . ByronModeParams <$> pEpochSlots
61+
62+
pShelleyConsensusMode :: Parser AnyConsensusModeParams
63+
pShelleyConsensusMode = pure (AnyConsensusModeParams ShelleyModeParams)
64+
65+
pDefaultConsensusMode :: Parser AnyConsensusModeParams
66+
pDefaultConsensusMode =
67+
pure . AnyConsensusModeParams . CardanoModeParams $ EpochSlots defaultByronEpochSlots
68+
69+
defaultByronEpochSlots :: Word64
70+
defaultByronEpochSlots = 21600
71+
72+
pEpochSlots :: Parser EpochSlots
73+
pEpochSlots =
74+
fmap EpochSlots $ Opt.option (bounded "SLOTS") $ mconcat
75+
[ Opt.long "epoch-slots"
76+
, Opt.metavar "SLOTS"
77+
, Opt.help "The number of slots per epoch for the Byron era."
78+
, Opt.value defaultByronEpochSlots -- Default to the mainnet value.
79+
, Opt.showDefault
80+
]

cardano-cli/src/Cardano/CLI/Parsers.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
module Cardano.CLI.Parsers
77
( opts
88
, pref
9+
, pConsensusModeParams
910
, pNetworkId
1011
) where
1112

1213
import Cardano.CLI.Byron.Parsers (backwardsCompatibilityCommands, parseByronCommands)
13-
import Cardano.CLI.Common.Parsers (pNetworkId)
14+
import Cardano.CLI.Common.Parsers (pConsensusModeParams, pNetworkId)
1415
import Cardano.CLI.Ping (parsePingCmd)
1516
import Cardano.CLI.Render (customRenderHelp)
1617
import Cardano.CLI.Run (ClientCommand (..))

cardano-cli/src/Cardano/CLI/Shelley/Parsers.hs

+1-39
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ import Cardano.Api.Shelley
5858

5959
import Cardano.Chain.Common (BlockCount (BlockCount))
6060

61-
import Cardano.CLI.Common.Parsers (pNetworkId)
61+
import Cardano.CLI.Common.Parsers (pConsensusModeParams, pNetworkId)
6262
import Cardano.CLI.Shelley.Commands
6363
import Cardano.CLI.Shelley.Key (PaymentVerifier (..), StakeVerifier (..),
6464
VerificationKeyOrFile (..), VerificationKeyOrHashOrFile (..),
@@ -3200,44 +3200,6 @@ pMaxCollateralInputs =
32003200
]
32013201
]
32023202

3203-
pConsensusModeParams :: Parser AnyConsensusModeParams
3204-
pConsensusModeParams = asum
3205-
[ Opt.flag' (AnyConsensusModeParams ShelleyModeParams)
3206-
( Opt.long "shelley-mode"
3207-
<> Opt.help "For talking to a node running in Shelley-only mode."
3208-
)
3209-
, Opt.flag' ()
3210-
( Opt.long "byron-mode"
3211-
<> Opt.help "For talking to a node running in Byron-only mode."
3212-
)
3213-
*> pByronConsensusMode
3214-
, Opt.flag' ()
3215-
( Opt.long "cardano-mode"
3216-
<> Opt.help "For talking to a node running in full Cardano mode (default)."
3217-
)
3218-
*> pCardanoConsensusMode
3219-
, -- Default to the Cardano consensus mode.
3220-
pure . AnyConsensusModeParams . CardanoModeParams $ EpochSlots defaultByronEpochSlots
3221-
]
3222-
where
3223-
pCardanoConsensusMode :: Parser AnyConsensusModeParams
3224-
pCardanoConsensusMode = AnyConsensusModeParams . CardanoModeParams <$> pEpochSlots
3225-
pByronConsensusMode :: Parser AnyConsensusModeParams
3226-
pByronConsensusMode = AnyConsensusModeParams . ByronModeParams <$> pEpochSlots
3227-
3228-
defaultByronEpochSlots :: Word64
3229-
defaultByronEpochSlots = 21600
3230-
3231-
pEpochSlots :: Parser EpochSlots
3232-
pEpochSlots =
3233-
fmap EpochSlots $ Opt.option (bounded "SLOTS") $ mconcat
3234-
[ Opt.long "epoch-slots"
3235-
, Opt.metavar "SLOTS"
3236-
, Opt.help "The number of slots per epoch for the Byron era."
3237-
, Opt.value defaultByronEpochSlots -- Default to the mainnet value.
3238-
, Opt.showDefault
3239-
]
3240-
32413203
pProtocolVersion :: Parser (Natural, Natural)
32423204
pProtocolVersion =
32433205
(,) <$> pProtocolMajorVersion <*> pProtocolMinorVersion

cardano-submit-api/src/Cardano/TxSubmit/CLI/Parsers.hs

+4-55
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,17 @@ module Cardano.TxSubmit.CLI.Parsers
44
( opts
55
, pTxSubmitNodeParams
66
, pConfigFile
7-
, pProtocol
87
, pSocketPath
98
) where
109

11-
import Cardano.Api (AnyConsensusModeParams (..), ConsensusModeParams (..),
12-
EpochSlots (..), SocketPath (..))
10+
import Cardano.Api (SocketPath (..))
1311

14-
import Cardano.CLI.Parsers (pNetworkId)
12+
import Cardano.CLI.Parsers (pConsensusModeParams, pNetworkId)
1513

1614
import Cardano.TxSubmit.CLI.Types (ConfigFile (..), TxSubmitNodeParams (..))
1715
import Cardano.TxSubmit.Rest.Parsers (pWebserverConfig)
1816

19-
import Control.Applicative (Alternative (..), (<**>))
20-
import Data.Word (Word64)
17+
import Control.Applicative ((<**>))
2118
import Options.Applicative (Parser, ParserInfo)
2219

2320
import qualified Options.Applicative as Opt
@@ -31,7 +28,7 @@ opts = Opt.info (pTxSubmitNodeParams <**> Opt.helper)
3128
pTxSubmitNodeParams :: Parser TxSubmitNodeParams
3229
pTxSubmitNodeParams = TxSubmitNodeParams
3330
<$> pConfigFile
34-
<*> pProtocol
31+
<*> pConsensusModeParams
3532
<*> pNetworkId
3633
<*> pSocketPath
3734
<*> pWebserverConfig 8090
@@ -45,54 +42,6 @@ pConfigFile = ConfigFile <$> Opt.strOption
4542
<> Opt.metavar "FILEPATH"
4643
)
4744

48-
-- TODO: This was ripped from `cardano-cli` because, unfortunately, it's not
49-
-- exported. Once we export this parser from the appropriate module and update
50-
-- our `cardano-cli` dependency, we should remove this and import the parser
51-
-- from there.
52-
pProtocol :: Parser AnyConsensusModeParams
53-
pProtocol =
54-
( Opt.flag' ()
55-
( Opt.long "shelley-mode"
56-
<> Opt.help "For talking to a node running in Shelley-only mode."
57-
)
58-
*> pShelley
59-
)
60-
<|> ( Opt.flag' ()
61-
( Opt.long "byron-mode"
62-
<> Opt.help "For talking to a node running in Byron-only mode."
63-
)
64-
*> pByron
65-
)
66-
<|> ( Opt.flag' ()
67-
( Opt.long "cardano-mode"
68-
<> Opt.help "For talking to a node running in full Cardano mode (default)."
69-
)
70-
*> pCardano
71-
)
72-
<|> -- Default to the Cardano protocol.
73-
pure (AnyConsensusModeParams (CardanoModeParams (EpochSlots defaultByronEpochSlots)))
74-
where
75-
pByron :: Parser AnyConsensusModeParams
76-
pByron = AnyConsensusModeParams . ByronModeParams <$> pEpochSlots
77-
78-
pShelley :: Parser AnyConsensusModeParams
79-
pShelley = pure (AnyConsensusModeParams ShelleyModeParams)
80-
81-
pCardano :: Parser AnyConsensusModeParams
82-
pCardano = AnyConsensusModeParams . CardanoModeParams <$> pEpochSlots
83-
84-
pEpochSlots :: Parser EpochSlots
85-
pEpochSlots = EpochSlots <$> Opt.option Opt.auto
86-
( Opt.long "epoch-slots"
87-
<> Opt.metavar "NATURAL"
88-
<> Opt.help "The number of slots per epoch for the Byron era."
89-
<> Opt.value defaultByronEpochSlots -- Default to the mainnet value.
90-
<> Opt.showDefault
91-
)
92-
93-
defaultByronEpochSlots :: Word64
94-
defaultByronEpochSlots = 21600
95-
9645
pSocketPath :: Parser SocketPath
9746
pSocketPath = SocketPath <$> Opt.strOption
9847
( Opt.long "socket-path"

0 commit comments

Comments
 (0)