Skip to content

Commit

Permalink
query stake-distribution: add --output-{json,text} flags
Browse files Browse the repository at this point in the history
  • Loading branch information
smelc committed Apr 29, 2024
1 parent d63cfe5 commit b914377
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 33 deletions.
1 change: 1 addition & 0 deletions cardano-cli/src/Cardano/CLI/EraBased/Commands/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ data QueryStakeDistributionCmdArgs = QueryStakeDistributionCmdArgs
, consensusModeParams :: !ConsensusModeParams
, networkId :: !NetworkId
, target :: !(Consensus.Target ChainPoint)
, format :: Maybe QueryOutputFormat
, mOutFile :: !(Maybe (File () Out))
} deriving (Generic, Show)

Expand Down
1 change: 1 addition & 0 deletions cardano-cli/src/Cardano/CLI/EraBased/Options/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ pQueryStakeDistributionCmd era envCli =
<*> pConsensusModeParams
<*> pNetworkId envCli
<*> pTarget era
<*> (optional $ pQueryOutputFormat "stake-distribution")
<*> pMaybeOutputFile

pQueryStakeAddressInfoCmd :: CardanoEra era -> EnvCli -> Parser (QueryCmds era)
Expand Down
62 changes: 29 additions & 33 deletions cardano-cli/src/Cardano/CLI/EraBased/Run/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ import Data.Text (Text)
import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text
import qualified Data.Text.IO as T
import qualified Data.Text.IO as Text
import qualified Data.Text.Lazy.IO as LT
import Data.Time.Clock
import GHC.Generics
Expand Down Expand Up @@ -1215,6 +1214,7 @@ runQueryStakeDistributionCmd
{ Cmd.nodeSocketPath
, Cmd.consensusModeParams
, Cmd.networkId
, Cmd.format
, Cmd.target
, Cmd.mOutFile
} = do
Expand All @@ -1233,45 +1233,41 @@ runQueryStakeDistributionCmd
& onLeft (left . QueryCmdLocalStateQueryError . EraMismatchError)

pure $ do
writeStakeDistribution mOutFile result
writeStakeDistribution (newOutputFormat format mOutFile) mOutFile result
)
& onLeft (left . QueryCmdAcquireFailure)
& onLeft left

writeStakeDistribution
:: Maybe (File () Out)
:: QueryOutputFormat
-> Maybe (File () Out)
-> Map PoolId Rational
-> ExceptT QueryCmdError IO ()
writeStakeDistribution (Just (File outFile)) stakeDistrib =
handleIOExceptT (QueryCmdWriteFileError . FileIOError outFile) $
LBS.writeFile outFile (encodePretty stakeDistrib)

writeStakeDistribution Nothing stakeDistrib =
liftIO $ printStakeDistribution stakeDistrib


printStakeDistribution :: Map PoolId Rational -> IO ()
printStakeDistribution stakeDistrib = do
Text.putStrLn title
putStrLn $ replicate (Text.length title + 2) '-'
sequence_
[ putStrLn $ showStakeDistr poolId stakeFraction
| (poolId, stakeFraction) <- Map.toList stakeDistrib ]
where
title :: Text
title =
" PoolId Stake frac"

showStakeDistr :: PoolId
-> Rational
-- ^ Stake fraction
-> String
showStakeDistr poolId stakeFraction =
concat
[ Text.unpack (serialiseToBech32 poolId)
, " "
, showEFloat (Just 3) (fromRational stakeFraction :: Double) ""
]
writeStakeDistribution format mOutFile stakeDistrib =
firstExceptT QueryCmdWriteFileError . newExceptT
$ writeLazyByteStringOutput mOutFile toWrite
where
toWrite :: LBS.ByteString =
case format of
QueryOutputFormatJson -> encodePretty stakeDistrib
QueryOutputFormatText -> strictTextToLazyBytestring stakeDistributionText
stakeDistributionText =
Text.unlines $
[ title
, Text.replicate (Text.length title + 2) "-"
] ++
[ showStakeDistr poolId stakeFraction | (poolId, stakeFraction) <- Map.toList stakeDistrib ]
where
title :: Text
title =
" PoolId Stake frac"
showStakeDistr :: PoolId -> Rational -> Text
showStakeDistr poolId stakeFraction =
mconcat
[ serialiseToBech32 poolId
, " "
, Text.pack $ showEFloat (Just 3) (fromRational stakeFraction :: Double) ""
]

runQueryLeadershipScheduleCmd
:: Cmd.QueryLeadershipScheduleCmdArgs
Expand Down
1 change: 1 addition & 0 deletions cardano-cli/src/Cardano/CLI/Legacy/Commands/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ data LegacyQueryStakeDistributionCmdArgs = LegacyQueryStakeDistributionCmdArgs
{ nodeSocketPath :: !SocketPath
, consensusModeParams :: !ConsensusModeParams
, networkId :: !NetworkId
, format :: Maybe QueryOutputFormat
, mOutFile :: !(Maybe (File () Out))
} deriving (Generic, Show)

Expand Down
1 change: 1 addition & 0 deletions cardano-cli/src/Cardano/CLI/Legacy/Options.hs
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,7 @@ pQueryCmds envCli =
<$> pSocketPath envCli
<*> pConsensusModeParams
<*> pNetworkId envCli
<*> (optional $ pQueryOutputFormat "stake-distribution")
<*> pMaybeOutputFile

pQueryStakeAddressInfo :: Parser LegacyQueryCmds
Expand Down

0 comments on commit b914377

Please sign in to comment.