From 4ac423b26b2576eac380f9d0eaba1b1ab0490ed2 Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Fri, 31 Jan 2025 14:34:58 -0400 Subject: [PATCH] Misc changes --- cardano-cli/cardano-cli.cabal | 2 ++ .../src/Cardano/CLI/Compatible/Transaction.hs | 6 ++++-- .../src/Cardano/CLI/EraBased/Options/Common.hs | 16 ++++++++-------- .../Cardano/CLI/EraBased/Run/Governance/Vote.hs | 7 ++++--- .../Cardano/CLI/EraBased/Script/Read/Common.hs | 4 ---- .../src/Cardano/CLI/EraBased/Script/Types.hs | 15 +++++++++++++-- .../src/Cardano/CLI/EraBased/Script/Vote/Read.hs | 2 +- cardano-cli/src/Cardano/CLI/Read.hs | 1 - .../CLI/Types/Errors/GovernanceVoteCmdError.hs | 3 ++- .../CLI/Types/Errors/PlutusScriptDecodeError.hs | 1 + .../cardano-cli-golden/Test/Golden/ErrorsSpec.hs | 5 +++-- 11 files changed, 38 insertions(+), 24 deletions(-) diff --git a/cardano-cli/cardano-cli.cabal b/cardano-cli/cardano-cli.cabal index 606a5551d3..d06334de34 100644 --- a/cardano-cli/cardano-cli.cabal +++ b/cardano-cli/cardano-cli.cabal @@ -121,9 +121,11 @@ library Cardano.CLI.EraBased.Script.Certificate.Types Cardano.CLI.EraBased.Script.Mint.Read Cardano.CLI.EraBased.Script.Mint.Types + Cardano.CLI.EraBased.Script.Read.Common Cardano.CLI.EraBased.Script.Spend.Read Cardano.CLI.EraBased.Script.Spend.Types Cardano.CLI.EraBased.Script.Types + Cardano.CLI.EraBased.Script.Vote.Read Cardano.CLI.EraBased.Script.Vote.Types Cardano.CLI.EraBased.Transaction.HashCheck Cardano.CLI.Helpers diff --git a/cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs b/cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs index 4d776163ec..c396ff9828 100644 --- a/cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs +++ b/cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs @@ -25,6 +25,8 @@ import Cardano.CLI.EraBased.Run.Transaction import Cardano.CLI.EraBased.Script.Certificate.Read import Cardano.CLI.EraBased.Script.Certificate.Types import Cardano.CLI.EraBased.Script.Types +import Cardano.CLI.EraBased.Script.Vote.Types (CliVoteScriptRequirements, + VoteScriptWitness (..)) import Cardano.CLI.Parser import Cardano.CLI.Read import Cardano.CLI.Types.Common @@ -182,7 +184,7 @@ data CompatibleTransactionCmds era [TxOutAnyEra] !(Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))) !(Maybe (Featured ConwayEraOnwards era [(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))])) - ![(VoteFile In, Maybe (ScriptWitnessFiles WitCtxStake))] + ![(VoteFile In, Maybe CliVoteScriptRequirements)] [WitnessSigningData] -- ^ Signing keys (Maybe NetworkId) @@ -272,7 +274,7 @@ runCompatibleTransactionCmd readVotingProceduresFiles w mVotes votingProcedures <- firstExceptT CompatibleVoteMergeError . hoistEither $ - mkTxVotingProcedures votesAndWits + mkTxVotingProcedures [(v, vswScriptWitness <$> mSwit) | (v, mSwit) <- votesAndWits] return (prop, VotingProcedures w votingProcedures) ) sbe diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs b/cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs index 70bf7768bf..014d5ed47c 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs @@ -1104,10 +1104,10 @@ pScriptWitnessFiles witctx autoBalanceExecUnits scriptFlagPrefix scriptFlagPrefi toScriptWitnessFiles :: ScriptFile -> Maybe - ( ScriptDatumOrFile witctx - , ScriptRedeemerOrFile - , ExecutionUnits - ) + ( ScriptDatumOrFile witctx + , ScriptRedeemerOrFile + , ExecutionUnits + ) -> ScriptWitnessFiles witctx toScriptWitnessFiles sf Nothing = SimpleScriptWitnessFile sf toScriptWitnessFiles sf (Just (d, r, e)) = PlutusScriptWitnessFiles sf d r e @@ -1611,10 +1611,10 @@ pMetadataFile = pWithdrawal :: BalanceTxExecUnits -> Parser - ( StakeAddress - , Lovelace - , Maybe (ScriptWitnessFiles WitCtxStake) - ) + ( StakeAddress + , Lovelace + , Maybe (ScriptWitnessFiles WitCtxStake) + ) pWithdrawal balance = (\(stakeAddr, lovelace) maybeScriptFp -> (stakeAddr, lovelace, maybeScriptFp)) <$> Opt.option diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Vote.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Vote.hs index cff860d6c5..2b4e6b7007 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Vote.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Vote.hs @@ -16,7 +16,7 @@ import qualified Cardano.Api.Ledger as L import Cardano.Api.Shelley import qualified Cardano.CLI.EraBased.Commands.Governance.Vote as Cmd -import Cardano.CLI.Read (readSingleVote) +import Cardano.CLI.EraBased.Script.Vote.Read import Cardano.CLI.Run.Hash (carryHashChecks) import Cardano.CLI.Types.Common import Cardano.CLI.Types.Errors.CmdError @@ -108,8 +108,9 @@ runGovernanceVoteViewCmd shelleyBasedEraConstraints sbe $ do voteProcedures <- - fmap fst . firstExceptT GovernanceVoteCmdReadVoteFileError . newExceptT $ - readSingleVote eon (voteFile, Nothing) + fmap fst $ + firstExceptT GovernanceVoteCmdReadVoteFileError $ + readVoteScriptWitness eon (voteFile, Nothing) firstExceptT GovernanceVoteCmdWriteError . newExceptT . ( case outFormat of diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Read/Common.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Read/Common.hs index 20fd0aad43..e66ed5a21e 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Script/Read/Common.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Read/Common.hs @@ -22,18 +22,14 @@ import Cardano.CLI.Types.Errors.PlutusScriptDecodeError import Cardano.CLI.Types.Errors.ScriptDataError import Cardano.CLI.Types.Errors.ScriptDecodeError - import Prelude import qualified Data.Aeson as Aeson import Data.Bifunctor import qualified Data.ByteString as BS - import qualified Data.ByteString.Lazy.Char8 as LBS - import qualified Data.Text as Text - deserialisePlutusScript :: BS.ByteString -> Either PlutusScriptDecodeError AnyPlutusScript diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs index 39f6f5e736..979dd9381a 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs @@ -1,8 +1,11 @@ +{-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-} module Cardano.CLI.EraBased.Script.Types - ( -- * Errors - CliScriptWitnessError (..) + ( AnyPlutusScript (..) + + -- * Errors + , CliScriptWitnessError (..) ) where @@ -12,17 +15,25 @@ import Cardano.CLI.Types.Errors.PlutusScriptDecodeError import Cardano.CLI.Types.Errors.ScriptDataError import Cardano.CLI.Types.Errors.ScriptDecodeError +-- TODO: Move to cardano-api +data AnyPlutusScript where + AnyPlutusScript + :: IsPlutusScriptLanguage lang => PlutusScriptVersion lang -> PlutusScript lang -> AnyPlutusScript + data CliScriptWitnessError = SimpleScriptWitnessDecodeError ScriptDecodeError + | TextEnvelopeError TextEnvelopeError | PlutusScriptWitnessDecodeError PlutusScriptDecodeError | PlutusScriptWitnessLanguageNotSupportedInEra AnyPlutusScriptVersion AnyShelleyBasedEra | PlutusScriptWitnessRedeemerError ScriptDataError + deriving Show instance Error CliScriptWitnessError where prettyError = \case SimpleScriptWitnessDecodeError err -> prettyError err + TextEnvelopeError err -> prettyError err PlutusScriptWitnessDecodeError err -> prettyError err PlutusScriptWitnessLanguageNotSupportedInEra version era -> "Plutus script version " <> pshow version <> " is not supported in era " <> pshow era diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs index b1cf6cce3b..7e0aada924 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs @@ -42,7 +42,7 @@ readVoteScriptWitness w (voteFp, Just certScriptReq) = do readFileSimpleScript sFp case s of SimpleScript ss -> do - return + return ( votProceds , Just $ VoteScriptWitness diff --git a/cardano-cli/src/Cardano/CLI/Read.hs b/cardano-cli/src/Cardano/CLI/Read.hs index 90e3662f45..dc7148dab0 100644 --- a/cardano-cli/src/Cardano/CLI/Read.hs +++ b/cardano-cli/src/Cardano/CLI/Read.hs @@ -291,7 +291,6 @@ readScriptWitnessFilesTuple era = mapM readSwitFile return (tIn, b, Just sWit) readSwitFile (tIn, b, Nothing) = return (tIn, b, Nothing) --- TODO: Left off here. Move this to Cardano.CLI.EraBased.Script.Read.Common readScriptWitness :: ShelleyBasedEra era -> ScriptWitnessFiles witctx diff --git a/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs b/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs index 38c0bb114b..df91fc9721 100644 --- a/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs +++ b/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs @@ -7,6 +7,7 @@ module Cardano.CLI.Types.Errors.GovernanceVoteCmdError where import Cardano.Api.Shelley import Cardano.Binary (DecoderError) +import Cardano.CLI.EraBased.Script.Types import Cardano.CLI.Read (VoteError) import Cardano.CLI.Types.Errors.HashCmdError (HashCheckError) @@ -16,7 +17,7 @@ import qualified Formatting.Buildable as B data GovernanceVoteCmdError = GovernanceVoteCmdReadVerificationKeyError !(FileError InputDecodeError) - | GovernanceVoteCmdReadVoteFileError !VoteError + | GovernanceVoteCmdReadVoteFileError !(FileError CliScriptWitnessError) | GovernanceVoteCmdCredentialDecodeError !DecoderError | GovernanceVoteCmdWriteError !(FileError ()) | GovernanceVoteCmdReadVoteTextError !VoteError diff --git a/cardano-cli/src/Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs b/cardano-cli/src/Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs index 22dc7efad8..8f010128b9 100644 --- a/cardano-cli/src/Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs +++ b/cardano-cli/src/Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs @@ -18,6 +18,7 @@ data PlutusScriptDecodeError -- ^ Script version !AnyPlutusScriptVersion -- ^ Attempted to decode with version + deriving Show instance Error PlutusScriptDecodeError where prettyError = \case diff --git a/cardano-cli/test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs b/cardano-cli/test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs index e5349a6694..01e1a05de3 100644 --- a/cardano-cli/test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs +++ b/cardano-cli/test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs @@ -17,6 +17,7 @@ import Cardano.Api.Shelley import Cardano.Binary import Cardano.CLI.EraBased.Run.Governance.Actions import Cardano.CLI.EraBased.Run.Governance.Committee +import Cardano.CLI.EraBased.Script.Types import Cardano.CLI.Read import Cardano.CLI.Types.Errors.DelegationError import Cardano.CLI.Types.Errors.GovernanceCmdError @@ -233,8 +234,8 @@ test_VoteReadError = , ( "GovernanceVoteCmdReadVoteFileError" , GovernanceVoteCmdReadVoteFileError $ - VoteErrorFile $ - FileError "path/file.txt" $ + FileError "path/file.txt" $ + TextEnvelopeError $ TextEnvelopeAesonDecodeError "some error description" ) ,