Skip to content

Commit

Permalink
Unify HashGoal with DRepHashGoal and DRepHashGoal
Browse files Browse the repository at this point in the history
  • Loading branch information
palas committed Oct 10, 2024
1 parent 46754da commit 13dfea0
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 42 deletions.
6 changes: 3 additions & 3 deletions cardano-cli/src/Cardano/CLI/Commands/Hash.hs
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,19 @@ 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

data HashAnchorDataCmdArgs
= HashAnchorDataCmdArgs
{ toHash :: !AnchorDataHashSource
, hashGoal :: !HashGoal
, hashGoal :: !(HashGoal (L.SafeHash L.StandardCrypto L.AnchorData))
}
deriving Show

Expand Down
13 changes: 2 additions & 11 deletions cardano-cli/src/Cardano/CLI/EraBased/Commands/Governance/DRep.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -87,23 +87,14 @@ data GovernanceDRepMetadataHashCmdArgs era
= GovernanceDRepMetadataHashCmdArgs
{ eon :: !(ConwayEraOnwards era)
, drepMetadataSource :: !DRepMetadataSource
, hashGoal :: !DRepHashGoal
, hashGoal :: !(HashGoal (Hash DRepMetadata))
}

data DRepMetadataSource
= DrepMetadataFileIn !(DRepMetadataFile In)
| 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
Expand Down
13 changes: 2 additions & 11 deletions cardano-cli/src/Cardano/CLI/EraBased/Commands/StakePool.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ module Cardano.CLI.EraBased.Commands.StakePool
, StakePoolMetadataHashCmdArgs (..)
, StakePoolRegistrationCertificateCmdArgs (..)
, StakePoolMetadataSource (..)
, StakePoolMetadataHashGoal (..)
)
where

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

Expand Down Expand Up @@ -52,7 +52,7 @@ data StakePoolIdCmdArgs era
data StakePoolMetadataHashCmdArgs era
= StakePoolMetadataHashCmdArgs
{ poolMetadataSource :: !StakePoolMetadataSource
, hashGoal :: !StakePoolMetadataHashGoal
, hashGoal :: !(HashGoal (Hash StakePoolMetadata))
}
deriving Show

Expand All @@ -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)
Expand Down
11 changes: 6 additions & 5 deletions cardano-cli/src/Cardano/CLI/EraBased/Options/Governance/DRep.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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 =
Expand Down
9 changes: 5 additions & 4 deletions cardano-cli/src/Cardano/CLI/EraBased/Options/StakePool.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 =
Expand Down
8 changes: 4 additions & 4 deletions cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down
7 changes: 4 additions & 3 deletions cardano-cli/src/Cardano/CLI/EraBased/Run/StakePool.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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 =
Expand Down
4 changes: 3 additions & 1 deletion cardano-cli/src/Cardano/CLI/Options/Hash.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 13dfea0

Please sign in to comment.