Skip to content

Commit

Permalink
Update governance action create-info
Browse files Browse the repository at this point in the history
  • Loading branch information
newhoggy committed May 30, 2023
1 parent fa6cfd8 commit 425d7b9
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 43 deletions.
1 change: 1 addition & 0 deletions cardano-cli/cardano-cli.cabal
Expand Up @@ -136,6 +136,7 @@ library
, cryptonite
, deepseq
, directory
, either
, filepath
, formatting
, io-classes
Expand Down
46 changes: 39 additions & 7 deletions cardano-cli/src/Cardano/CLI/Shelley/Commands.hs
@@ -1,5 +1,9 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}

-- | Shelley CLI command types
Expand All @@ -23,9 +27,13 @@ module Cardano.CLI.Shelley.Commands
, GovernanceActionId (..)
, GovernanceActionReceipt (..)
, GovernanceActionQueryResult (..)
, GovernanceActionInfoMetadata(..)
, GovernanceActionInfoMetadataUrl(..)
, GenesisCmd (..)
, TextViewCmd (..)
, renderShelleyCommand
, AsType(..)
, Hash(..)

-- * CLI flag types
, AddressKeyType (..)
Expand All @@ -51,7 +59,6 @@ module Cardano.CLI.Shelley.Commands
, BlockId (..)
, WitnessSigningData (..)
, ColdVerificationKeyOrFile (..)
, GovernanceActionInfoResource(..)
) where

import Cardano.Api.Shelley
Expand All @@ -61,11 +68,17 @@ import Cardano.CLI.Shelley.Key (PaymentVerifier, PoolDelegationTarget,
StakeVerifier, VerificationKeyOrFile, VerificationKeyOrHashOrFile,
VerificationKeyTextOrFile)
import Cardano.CLI.Types
import qualified Cardano.Crypto.Hash.Class as Crypto
import Cardano.Ledger.Crypto (StandardCrypto)
import qualified Cardano.Ledger.Keys as Shelley
import Cardano.Ledger.Shelley.TxBody (MIRPot)

import Prelude

import Data.ByteString (ByteString)
import Data.Either.Combinators (maybeToRight)
import Data.Text (Text)

--
-- Shelley CLI command data types
--
Expand Down Expand Up @@ -434,14 +447,33 @@ renderQueryCmd cmd =
TxMempoolQueryNextTx -> "next-tx"
TxMempoolQueryInfo -> "info"

newtype GovernanceActionInfoMetadataUrl = GovernanceActionInfoMetadataUrl Text
deriving newtype (Eq, Show)

newtype GovernanceActionInfoMetadata =
GovernanceActionInfoMetadata
{ unGovernanceActionInfoMetadata :: ByteString
} deriving (Eq, Show)

newtype instance Hash GovernanceActionInfoMetadata =
GovernanceActionInfoMetadataHash (Shelley.Hash StandardCrypto ByteString)
deriving (Eq, Show)

instance HasTypeProxy GovernanceActionInfoMetadata where
data AsType GovernanceActionInfoMetadata = AsGovernanceActionInfoMetadata
proxyToAsType _ = AsGovernanceActionInfoMetadata

instance SerialiseAsRawBytes (Hash GovernanceActionInfoMetadata) where
serialiseToRawBytes (GovernanceActionInfoMetadataHash h) = Crypto.hashToBytes h

deserialiseFromRawBytes (AsHash AsGovernanceActionInfoMetadata) bs =
maybeToRight (SerialiseAsRawBytesError "Unable to deserialise Hash GovernanceActionInfoMetadata") $
GovernanceActionInfoMetadataHash <$> Crypto.hashFromBytes bs

data GovernanceAction =
GovernanceActionOfInfo
GovernanceActionInfoResource
deriving Show

data GovernanceActionInfoResource
= GovernanceActionInfoResourceOfFile (File () In)
| GovernanceActionInfoResourceOfUrl (File () In)
GovernanceActionInfoMetadataUrl
(Hash GovernanceActionInfoMetadata)
deriving Show

data Vote = VoteYes | VoteNo | VoteAbstain deriving Show
Expand Down
40 changes: 22 additions & 18 deletions cardano-cli/src/Cardano/CLI/Shelley/Parsers.hs
Expand Up @@ -1228,32 +1228,36 @@ pGovernanceActionCmd envCli =
pGovernanceActionOfInfo :: Parser GovernanceAction
pGovernanceActionOfInfo =
GovernanceActionOfInfo
<$> pGovernanceActionInfoResource
<$> pGovernanceActionInfoMetadataUrl
<*> pGovernanceActionInfoMetadataHash

pGovernanceActionInfoResource :: Parser GovernanceActionInfoResource
pGovernanceActionInfoResource =
asum
[ pGovernanceActionInfoResourceOfUrl
, pGovernanceActionInfoResourceOfFile
]
-- GovernanceActionOfInfo
-- GovernanceInfoActionMetadataUrl
-- (Hash GovernanceInfoActionMetadata)

pGovernanceActionInfoResourceOfUrl :: Parser GovernanceActionInfoResource
pGovernanceActionInfoResourceOfUrl =
fmap GovernanceActionInfoResourceOfUrl $ Opt.strOption $ mconcat
pGovernanceActionInfoMetadataUrl :: Parser GovernanceActionInfoMetadataUrl
pGovernanceActionInfoMetadataUrl =
fmap GovernanceActionInfoMetadataUrl $ Opt.strOption $ mconcat
[ Opt.long "metadata-url"
, Opt.metavar "URL"
, Opt.help "The metadata url."
, Opt.completer (Opt.bashCompleter "url")
]

pGovernanceActionInfoResourceOfFile :: Parser GovernanceActionInfoResource
pGovernanceActionInfoResourceOfFile =
fmap GovernanceActionInfoResourceOfFile $ Opt.strOption $ mconcat
[ Opt.long "metadata-file"
, Opt.metavar "FILE"
, Opt.help "The metadata file."
, Opt.completer (Opt.bashCompleter "file")
]
pGovernanceActionInfoMetadataHash :: Parser (Hash GovernanceActionInfoMetadata)
pGovernanceActionInfoMetadataHash =
Opt.option
(Opt.eitherReader metadataHash)
( Opt.long "metadata-hash"
<> Opt.metavar "HASH"
<> Opt.help "Pool metadata hash."
)
where
metadataHash :: String -> Either String (Hash GovernanceActionInfoMetadata)
metadataHash =
first displayError
. deserialiseFromRawBytesHex (AsHash AsGovernanceActionInfoMetadata)
. BSC.pack

pActionView :: Parser GovernanceActionCmd
pActionView =
Expand Down
8 changes: 2 additions & 6 deletions cardano-cli/test/cardano-cli-golden/files/golden/help.cli
Expand Up @@ -76,12 +76,8 @@ Usage: cardano-cli governance action (create-info | view | query)

Commands related to governance actions

Usage: cardano-cli governance action create-info
( --stake-verification-key STRING
| --stake-verification-key-file FILE
| --stake-script-file FILE
)
(--metadata-url URL | --metadata-file FILE)
Usage: cardano-cli governance action create-info --metadata-url URL
--metadata-hash HASH
--out-file FILE

Create an info action
Expand Down
@@ -1,20 +1,11 @@
Usage: cardano-cli governance action create-info
( --stake-verification-key STRING
| --stake-verification-key-file FILE
| --stake-script-file FILE
)
(--metadata-url URL | --metadata-file FILE)
Usage: cardano-cli governance action create-info --metadata-url URL
--metadata-hash HASH
--out-file FILE

Create an info action

Available options:
--stake-verification-key STRING
Stake verification key (Bech32 or hex-encoded).
--stake-verification-key-file FILE
Filepath of the staking verification key.
--stake-script-file FILE Filepath of the staking script.
--metadata-url URL The metadata url.
--metadata-file FILE The metadata file.
--metadata-hash HASH Pool metadata hash.
--out-file FILE The output file.
-h,--help Show this help text

0 comments on commit 425d7b9

Please sign in to comment.