From 13dfea0d5f57a2de13c0e4bb437d13b4209b4680 Mon Sep 17 00:00:00 2001 From: Pablo Lamela Date: Thu, 10 Oct 2024 19:37:31 +0200 Subject: [PATCH] Unify `HashGoal` with `DRepHashGoal` and `DRepHashGoal` --- cardano-cli/src/Cardano/CLI/Commands/Hash.hs | 6 +++--- .../CLI/EraBased/Commands/Governance/DRep.hs | 13 ++----------- .../src/Cardano/CLI/EraBased/Commands/StakePool.hs | 13 ++----------- .../Cardano/CLI/EraBased/Options/Governance/DRep.hs | 11 ++++++----- .../src/Cardano/CLI/EraBased/Options/StakePool.hs | 9 +++++---- .../src/Cardano/CLI/EraBased/Run/Governance/DRep.hs | 8 ++++---- .../src/Cardano/CLI/EraBased/Run/StakePool.hs | 7 ++++--- cardano-cli/src/Cardano/CLI/Options/Hash.hs | 4 +++- 8 files changed, 29 insertions(+), 42 deletions(-) diff --git a/cardano-cli/src/Cardano/CLI/Commands/Hash.hs b/cardano-cli/src/Cardano/CLI/Commands/Hash.hs index 0672f8ee50..a457b7e113 100644 --- a/cardano-cli/src/Cardano/CLI/Commands/Hash.hs +++ b/cardano-cli/src/Cardano/CLI/Commands/Hash.hs @@ -23,11 +23,11 @@ data HashCmds = HashAnchorDataCmd !HashAnchorDataCmdArgs | HashScriptCmd !HashScriptCmdArgs -data HashGoal +data HashGoal hash = -- | The hash is written to stdout HashToStdout | -- | The hash to check against - CheckHash !(L.SafeHash L.StandardCrypto L.AnchorData) + CheckHash !hash | -- | The output file to which the hash is written HashToFile !(File () Out) deriving Show @@ -35,7 +35,7 @@ data HashGoal data HashAnchorDataCmdArgs = HashAnchorDataCmdArgs { toHash :: !AnchorDataHashSource - , hashGoal :: !HashGoal + , hashGoal :: !(HashGoal (L.SafeHash L.StandardCrypto L.AnchorData)) } deriving Show diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Commands/Governance/DRep.hs b/cardano-cli/src/Cardano/CLI/EraBased/Commands/Governance/DRep.hs index ed2eb1213a..a877a3ba38 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Commands/Governance/DRep.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Commands/Governance/DRep.hs @@ -12,13 +12,13 @@ module Cardano.CLI.EraBased.Commands.Governance.DRep , GovernanceDRepUpdateCertificateCmdArgs (..) , GovernanceDRepMetadataHashCmdArgs (..) , DRepMetadataSource (..) - , DRepHashGoal (..) ) where import Cardano.Api import qualified Cardano.Api.Ledger as L +import Cardano.CLI.Commands.Hash (HashGoal) import Cardano.CLI.Types.Common import Cardano.CLI.Types.Key @@ -87,7 +87,7 @@ data GovernanceDRepMetadataHashCmdArgs era = GovernanceDRepMetadataHashCmdArgs { eon :: !(ConwayEraOnwards era) , drepMetadataSource :: !DRepMetadataSource - , hashGoal :: !DRepHashGoal + , hashGoal :: !(HashGoal (Hash DRepMetadata)) } data DRepMetadataSource @@ -95,15 +95,6 @@ data DRepMetadataSource | DrepMetadataURL !L.Url deriving Show -data DRepHashGoal - = -- | The hash is written to stdout - DRepHashToStdout - | -- | The hash to check against - CheckDRepHash !(Hash DRepMetadata) - | -- | The output file to which the hash is written - DRepHashToFile !(File () Out) - deriving Show - renderGovernanceDRepCmds :: () => GovernanceDRepCmds era diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Commands/StakePool.hs b/cardano-cli/src/Cardano/CLI/EraBased/Commands/StakePool.hs index f6f0adb001..17987288c2 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Commands/StakePool.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Commands/StakePool.hs @@ -10,7 +10,6 @@ module Cardano.CLI.EraBased.Commands.StakePool , StakePoolMetadataHashCmdArgs (..) , StakePoolRegistrationCertificateCmdArgs (..) , StakePoolMetadataSource (..) - , StakePoolMetadataHashGoal (..) ) where @@ -18,6 +17,7 @@ import Cardano.Api.Ledger (Coin) import qualified Cardano.Api.Ledger as L import Cardano.Api.Shelley hiding (QueryInShelleyBasedEra (..)) +import Cardano.CLI.Commands.Hash (HashGoal) import Cardano.CLI.Types.Common import Cardano.CLI.Types.Key @@ -52,7 +52,7 @@ data StakePoolIdCmdArgs era data StakePoolMetadataHashCmdArgs era = StakePoolMetadataHashCmdArgs { poolMetadataSource :: !StakePoolMetadataSource - , hashGoal :: !StakePoolMetadataHashGoal + , hashGoal :: !(HashGoal (Hash StakePoolMetadata)) } deriving Show @@ -61,15 +61,6 @@ data StakePoolMetadataSource | StakePoolMetadataURL !L.Url deriving Show -data StakePoolMetadataHashGoal - = -- | The hash is written to stdout - StakePoolMetadataHashToStdout - | -- | The hash to check against - CheckStakePoolMetadataHash !(Hash StakePoolMetadata) - | -- | The output file to which the hash is written - StakePoolMetadataHashToFile !(File () Out) - deriving Show - data StakePoolRegistrationCertificateCmdArgs era = StakePoolRegistrationCertificateCmdArgs { sbe :: !(ShelleyBasedEra era) diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Options/Governance/DRep.hs b/cardano-cli/src/Cardano/CLI/EraBased/Options/Governance/DRep.hs index 63f9587595..84cbc7a8c6 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Options/Governance/DRep.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Options/Governance/DRep.hs @@ -14,12 +14,13 @@ import Cardano.Api.Ledger (extractHash) import qualified Cardano.Api.Ledger as L import Cardano.Api.Shelley (Hash (DRepMetadataHash)) +import Cardano.CLI.Commands.Hash (HashGoal (..)) import Cardano.CLI.Environment import Cardano.CLI.EraBased.Commands.Governance.DRep import Cardano.CLI.EraBased.Options.Common import Cardano.CLI.Parser import Cardano.CLI.Read -import Cardano.CLI.Types.Common +import Cardano.CLI.Types.Common hiding (CheckHash) import Cardano.CLI.Types.Key import Cardano.Ledger.SafeHash (castSafeHash) @@ -210,13 +211,13 @@ pGovernanceDrepMetadataHashCmd era = do $ Opt.progDesc "Calculate the hash of a metadata file, optionally checking the obtained hash against an expected value." -pDRepHashGoal :: Parser DRepHashGoal +pDRepHashGoal :: Parser (HashGoal (Hash DRepMetadata)) pDRepHashGoal = asum - [ CheckDRepHash <$> pExpectedDrepMetadataHash - , DRepHashToFile <$> pOutputFile + [ CheckHash <$> pExpectedDrepMetadataHash + , HashToFile <$> pOutputFile ] - <|> pure DRepHashToStdout + <|> pure HashToStdout pDRepMetadataSource :: Parser DRepMetadataSource pDRepMetadataSource = diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Options/StakePool.hs b/cardano-cli/src/Cardano/CLI/EraBased/Options/StakePool.hs index 0077a2eff9..877d4fa83f 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Options/StakePool.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Options/StakePool.hs @@ -15,6 +15,7 @@ import Cardano.Api import qualified Cardano.Api.Ledger as L import Cardano.Api.Shelley (Hash (StakePoolMetadataHash)) +import qualified Cardano.CLI.Commands.Hash as Cmd import Cardano.CLI.Environment (EnvCli (..)) import qualified Cardano.CLI.EraBased.Commands.StakePool as Cmd import Cardano.CLI.EraBased.Options.Common @@ -79,13 +80,13 @@ pPoolMetadataSource = <$> pUrl "pool-metadata-url" "URL pointing to the JSON Metadata file to hash." ] -pPoolMetadataHashGoal :: Parser Cmd.StakePoolMetadataHashGoal +pPoolMetadataHashGoal :: Parser (Cmd.HashGoal (Hash StakePoolMetadata)) pPoolMetadataHashGoal = Opt.asum - [ Cmd.CheckStakePoolMetadataHash <$> pExpectedStakePoolMetadataHash - , Cmd.StakePoolMetadataHashToFile <$> pOutputFile + [ Cmd.CheckHash <$> pExpectedStakePoolMetadataHash + , Cmd.HashToFile <$> pOutputFile ] - <|> pure Cmd.StakePoolMetadataHashToStdout + <|> pure Cmd.HashToStdout pExpectedStakePoolMetadataHash :: Parser (Hash StakePoolMetadata) pExpectedStakePoolMetadataHash = diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs index 95afe33c18..a8644d579e 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs @@ -18,7 +18,7 @@ where import Cardano.Api import qualified Cardano.Api.Ledger as L -import Cardano.CLI.EraBased.Commands.Governance.DRep (DRepHashGoal (..)) +import qualified Cardano.CLI.Commands.Hash as Cmd import qualified Cardano.CLI.EraBased.Commands.Governance.DRep as Cmd import qualified Cardano.CLI.EraBased.Run.Key as Key import Cardano.CLI.Run.Hash (allSchemas, getByteStringFromURL, httpsAndIpfsSchemas) @@ -190,12 +190,12 @@ runGovernanceDRepMetadataHashCmd fetchURLToGovernanceCmdError $ getByteStringFromURL allSchemas urlText let (_metadata, metadataHash) = hashDRepMetadata metadataBytes case hashGoal of - CheckDRepHash expectedHash + Cmd.CheckHash expectedHash | metadataHash /= expectedHash -> left $ GovernanceCmdHashMismatchError expectedHash metadataHash | otherwise -> liftIO $ putStrLn "Hashes match!" - DRepHashToFile outFile -> writeOutput (Just outFile) metadataHash - DRepHashToStdout -> writeOutput Nothing metadataHash + Cmd.HashToFile outFile -> writeOutput (Just outFile) metadataHash + Cmd.HashToStdout -> writeOutput Nothing metadataHash where writeOutput :: MonadIO m diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/StakePool.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/StakePool.hs index 132f861d85..44a03d84e2 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/StakePool.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/StakePool.hs @@ -17,6 +17,7 @@ where import qualified Cardano.Api.Ledger as L import Cardano.Api.Shelley +import qualified Cardano.CLI.Commands.Hash as Cmd import Cardano.CLI.EraBased.Commands.StakePool import qualified Cardano.CLI.EraBased.Commands.StakePool as Cmd import Cardano.CLI.Run.Hash (allSchemas, getByteStringFromURL, httpsAndIpfsSchemas) @@ -245,12 +246,12 @@ runStakePoolMetadataHashCmd $ validateAndHashStakePoolMetadata metadataBytes case hashGoal of - CheckStakePoolMetadataHash expectedHash + Cmd.CheckHash expectedHash | metadataHash /= expectedHash -> left $ StakePoolCmdHashMismatchError expectedHash metadataHash | otherwise -> liftIO $ putStrLn "Hashes match!" - StakePoolMetadataHashToFile outFile -> writeOutput (Just outFile) metadataHash - StakePoolMetadataHashToStdout -> writeOutput Nothing metadataHash + Cmd.HashToFile outFile -> writeOutput (Just outFile) metadataHash + Cmd.HashToStdout -> writeOutput Nothing metadataHash where writeOutput :: Maybe (File () Out) -> Hash StakePoolMetadata -> ExceptT StakePoolCmdError IO () writeOutput mOutFile metadataHash = diff --git a/cardano-cli/src/Cardano/CLI/Options/Hash.hs b/cardano-cli/src/Cardano/CLI/Options/Hash.hs index 7af0003f49..dad0249226 100644 --- a/cardano-cli/src/Cardano/CLI/Options/Hash.hs +++ b/cardano-cli/src/Cardano/CLI/Options/Hash.hs @@ -6,6 +6,8 @@ module Cardano.CLI.Options.Hash ) where +import qualified Cardano.Api.Ledger as L + import qualified Cardano.CLI.Commands.Hash as Cmd import Cardano.CLI.EraBased.Options.Common @@ -37,7 +39,7 @@ pHashAnchorDataCmd = do ) $ Opt.progDesc "Compute the hash of some anchor data (to then pass it to other commands)." -pHashGoal :: Parser Cmd.HashGoal +pHashGoal :: Parser (Cmd.HashGoal (L.SafeHash L.StandardCrypto L.AnchorData)) pHashGoal = asum [ Cmd.CheckHash <$> pExpectedHash