Skip to content

Commit 6a8f324

Browse files
committed
cardano-cli: Add option --stake-address to subcommand stake-address registration-certificate
Fix #2723
1 parent 54119c8 commit 6a8f324

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ data StakeAddressCmd
118118
= StakeAddressKeyGen VerificationKeyFile SigningKeyFile
119119
| StakeAddressKeyHash (VerificationKeyOrFile StakeKey) (Maybe OutputFile)
120120
| StakeAddressBuild StakeVerifier NetworkId (Maybe OutputFile)
121-
| StakeRegistrationCert StakeVerifier OutputFile
121+
| StakeRegistrationCert (Either StakeVerifier StakeAddress) OutputFile
122122
| StakeCredentialDelegationCert
123123
StakeVerifier
124124
(VerificationKeyOrHashOrFile StakePoolKey)

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,10 @@ pStakeAddressCmd =
341341
<*> pMaybeOutputFile
342342

343343
pStakeAddressRegistrationCert :: Parser StakeAddressCmd
344-
pStakeAddressRegistrationCert = StakeRegistrationCert
345-
<$> pStakeVerifier
346-
<*> pOutputFile
344+
pStakeAddressRegistrationCert =
345+
StakeRegistrationCert
346+
<$> (Left <$> pStakeVerifier <|> Right <$> pStakeAddress)
347+
<*> pOutputFile
347348

348349
pStakeAddressDeregistrationCert :: Parser StakeAddressCmd
349350
pStakeAddressDeregistrationCert = StakeCredentialDeRegistrationCert

cardano-cli/src/Cardano/CLI/Shelley/Run/StakeAddress.hs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,23 +116,31 @@ runStakeAddressBuild stakeVerifier network mOutputFp =
116116

117117

118118
runStakeCredentialRegistrationCert
119-
:: StakeVerifier
119+
:: Either StakeVerifier StakeAddress
120120
-> OutputFile
121121
-> ExceptT ShelleyStakeAddressCmdError IO ()
122122
runStakeCredentialRegistrationCert stakeVerifier (OutputFile oFp) =
123123
case stakeVerifier of
124-
StakeVerifierScriptFile (ScriptFile sFile) -> do
124+
Left (StakeVerifierScriptFile (ScriptFile sFile)) -> do
125125
ScriptInAnyLang _ script <- firstExceptT ShelleyStakeAddressCmdReadScriptFileError
126126
$ readFileScriptInAnyLang sFile
127127
let stakeCred = StakeCredentialByScript $ hashScript script
128128
writeRegistrationCert stakeCred
129-
StakeVerifierKey stakeVerKeyOrFile -> do
129+
Left (StakeVerifierKey stakeVerKeyOrFile) -> do
130130
stakeVerKey <- firstExceptT ShelleyStakeAddressCmdReadKeyFileError
131131
. newExceptT
132132
$ readVerificationKeyOrFile AsStakeKey stakeVerKeyOrFile
133133
let stakeCred = StakeCredentialByKey (verificationKeyHash stakeVerKey)
134134
writeRegistrationCert stakeCred
135+
Right stakeAddr ->
136+
writeRegistrationCert $ stakeAddrToStakeCredential stakeAddr
135137
where
138+
139+
--TODO: expose a pattern for StakeAddress that give us the StakeCredential
140+
stakeAddrToStakeCredential :: StakeAddress -> StakeCredential
141+
stakeAddrToStakeCredential (StakeAddress _ scred) =
142+
fromShelleyStakeCredential scred
143+
136144
writeRegistrationCert
137145
:: StakeCredential
138146
-> ExceptT ShelleyStakeAddressCmdError IO ()

0 commit comments

Comments
 (0)