Skip to content

Commit b9e2052

Browse files
committed
create-testnet-data: use experimental API and tighten arguments so that they are era specific
1 parent 5768460 commit b9e2052

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed

cardano-cli/src/Cardano/CLI/EraBased/Commands/Genesis.hs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{-# LANGUAGE DataKinds #-}
22
{-# LANGUAGE DuplicateRecordFields #-}
3+
{-# LANGUAGE ExistentialQuantification #-}
34
{-# LANGUAGE LambdaCase #-}
45

56
module Cardano.CLI.EraBased.Commands.Genesis
@@ -19,6 +20,7 @@ module Cardano.CLI.EraBased.Commands.Genesis
1920
where
2021

2122
import qualified Cardano.Api.Byron as Byron
23+
import qualified Cardano.Api.Experimental as Exp
2224
import Cardano.Api.Ledger (Coin)
2325
import Cardano.Api.Shelley
2426

@@ -30,7 +32,7 @@ data GenesisCmds era
3032
= GenesisCreate !(GenesisCreateCmdArgs era)
3133
| GenesisCreateCardano !(GenesisCreateCardanoCmdArgs era)
3234
| GenesisCreateStaked !(GenesisCreateStakedCmdArgs era)
33-
| GenesisCreateTestNetData !(GenesisCreateTestNetDataCmdArgs era)
35+
| GenesisCreateTestNetData !GenesisCreateTestNetDataCmdArgs
3436
| GenesisKeyGenGenesis !GenesisKeyGenGenesisCmdArgs
3537
| GenesisKeyGenDelegate !GenesisKeyGenDelegateCmdArgs
3638
| GenesisKeyGenUTxO !GenesisKeyGenUTxOCmdArgs
@@ -92,8 +94,10 @@ data GenesisCreateStakedCmdArgs era = GenesisCreateStakedCmdArgs
9294
}
9395
deriving Show
9496

95-
data GenesisCreateTestNetDataCmdArgs era = GenesisCreateTestNetDataCmdArgs
96-
{ eon :: !(ShelleyBasedEra era)
97+
-- TODO This existential type parameter should become a regular type parameter
98+
-- when we parameterize the parent type by the experimental era API.
99+
data GenesisCreateTestNetDataCmdArgs = forall era. GenesisCreateTestNetDataCmdArgs
100+
{ eon :: !(Exp.Era era)
97101
, specShelley :: !(Maybe FilePath)
98102
-- ^ Path to the @genesis-shelley@ file to use. If unspecified, a default one will be used.
99103
, specAlonzo :: !(Maybe FilePath)
@@ -127,7 +131,9 @@ data GenesisCreateTestNetDataCmdArgs era = GenesisCreateTestNetDataCmdArgs
127131
, outputDir :: !FilePath
128132
-- ^ Directory where to write credentials and files.
129133
}
130-
deriving Show
134+
135+
instance Show GenesisCreateTestNetDataCmdArgs where
136+
show _ = "GenesisCreateTestNetDataCmdArgs"
131137

132138
data GenesisKeyGenGenesisCmdArgs = GenesisKeyGenGenesisCmdArgs
133139
{ verificationKeyPath :: !(VerificationKeyFile Out)

cardano-cli/src/Cardano/CLI/EraBased/Options/Genesis.hs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ where
1111

1212
import Cardano.Api hiding (QueryInShelleyBasedEra (..))
1313
import qualified Cardano.Api.Byron as Byron
14+
import qualified Cardano.Api.Experimental as Exp
1415
import Cardano.Api.Ledger (Coin (..))
1516

1617
import Cardano.CLI.Environment (EnvCli (..))
@@ -217,18 +218,18 @@ pGenesisCreateStaked sbe envCli =
217218
pRelayJsonFp =
218219
parseFilePath "relay-specification-file" "JSON file that specifies the relays of each stake pool."
219220

220-
pGenesisCreateTestNetData :: ShelleyBasedEra era -> EnvCli -> Parser (GenesisCmds era)
221-
pGenesisCreateTestNetData sbe envCli =
221+
pGenesisCreateTestNetData :: Exp.Era era -> EnvCli -> Parser (GenesisCmds era)
222+
pGenesisCreateTestNetData era envCli =
222223
fmap GenesisCreateTestNetData $
223-
GenesisCreateTestNetDataCmdArgs sbe
224+
GenesisCreateTestNetDataCmdArgs era
224225
<$> optional (pSpecFile "shelley")
225226
<*> optional (pSpecFile "alonzo")
226227
<*> optional (pSpecFile "conway")
227228
<*> pNumGenesisKeys
228229
<*> pNumPools
229230
<*> pNumStakeDelegs
230-
<*> pNumCommittee
231-
<*> pNumDReps
231+
<*> (case era of Exp.BabbageEra -> pure 0; Exp.ConwayEra -> pNumCommittee) -- Committee doesn't exist in babbage
232+
<*> (case era of Exp.BabbageEra -> pure $ DRepCredentials OnDisk 0; Exp.ConwayEra -> pNumDReps) -- DReps don't exist in babbage
232233
<*> pNumStuffedUtxoCount
233234
<*> pNumUtxoKeys
234235
<*> pSupply

cardano-cli/src/Cardano/CLI/EraBased/Run/Genesis/CreateTestnetData.hs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ data WriteFileGenesis where
208208
WritePretty :: ToJSON genesis => genesis -> WriteFileGenesis
209209

210210
runGenesisCreateTestNetDataCmd
211-
:: GenesisCreateTestNetDataCmdArgs era
211+
:: GenesisCreateTestNetDataCmdArgs
212212
-> ExceptT GenesisCmdError IO ()
213213
runGenesisCreateTestNetDataCmd
214214
Cmd.GenesisCreateTestNetDataCmdArgs
@@ -239,7 +239,7 @@ runGenesisCreateTestNetDataCmd
239239
, outputDir
240240
} = do
241241
liftIO $ createDirectoryIfMissing False outputDir
242-
let era = toCardanoEra eon
242+
let era = convert eon
243243
shelleyGenesisInit <-
244244
fromMaybe shelleyGenesisDefaults <$> traverse decodeShelleyGenesisFile specShelley
245245
alonzoGenesis <-
@@ -298,7 +298,8 @@ runGenesisCreateTestNetDataCmd
298298

299299
when (0 < numPools) $ writeREADME poolsDir poolsREADME
300300

301-
-- CC members
301+
-- CC members. We don't need to look at the eon, because the command's parser guarantees
302+
-- that before Conway, the number of CC members at this point is 0.
302303
ccColdKeys <- forM [1 .. numCommitteeKeys] $ \index -> do
303304
let committeeDir = committeesDir </> "cc" <> show index
304305
vkeyHotFile = File @(VerificationKey ()) $ committeeDir </> "cc.hot.vkey"
@@ -318,7 +319,8 @@ runGenesisCreateTestNetDataCmd
318319

319320
when (0 < numCommitteeKeys) $ writeREADME committeesDir committeeREADME
320321

321-
-- DReps
322+
-- DReps. We don't need to look at the eon, because the command's parser guarantees
323+
-- that before Conway, the number of DReps at this point is 0.
322324
g <- Random.getStdGen
323325

324326
dRepKeys <- firstExceptT GenesisCmdFileError $

0 commit comments

Comments
 (0)