@@ -21,11 +21,12 @@ import qualified Cardano.Api.Ledger as L
2121import qualified Cardano.CLI.Commands.Hash as Cmd
2222import Cardano.CLI.Parser (stringToAnchorScheme )
2323import Cardano.CLI.Read
24- import Cardano.CLI.Types.Common (AnchorScheme (.. ), MustCheckHash (.. ),
24+ import Cardano.CLI.Types.Common (AnchorScheme (.. ), GenesisFile ( .. ), MustCheckHash (.. ),
2525 PotentiallyCheckedAnchor (.. ), SupportedSchemes )
2626import Cardano.CLI.Types.Errors.HashCmdError
2727import Cardano.Crypto.Hash (hashToTextAsHex )
28- import Cardano.Prelude (first )
28+ import qualified Cardano.Crypto.Hash as Crypto
29+ import Cardano.Prelude (ByteString , first )
2930
3031import Control.Exception (throw )
3132import Control.Monad (when )
@@ -55,6 +56,7 @@ runHashCmds
5556runHashCmds = \ case
5657 Cmd. HashAnchorDataCmd args -> runHashAnchorDataCmd args
5758 Cmd. HashScriptCmd args -> runHashScriptCmd args
59+ Cmd. HashGenesisFile args -> runHashGenesisFile args
5860
5961runHashAnchorDataCmd
6062 :: ()
@@ -217,3 +219,12 @@ carryHashChecks potentiallyCheckedAnchor =
217219 TrustHash -> pure ()
218220 where
219221 anchor = pcaAnchor potentiallyCheckedAnchor
222+
223+ runHashGenesisFile :: GenesisFile -> ExceptT HashCmdError IO ()
224+ runHashGenesisFile (GenesisFile fpath) = do
225+ content <-
226+ handleIOExceptT (HashGenesisCmdGenesisFileError . FileIOError fpath) $
227+ BS. readFile fpath
228+ let gh :: Crypto. Hash Crypto. Blake2b_256 ByteString
229+ gh = Crypto. hashWith id content
230+ liftIO $ Text. putStrLn (Crypto. hashToTextAsHex gh)
0 commit comments