Skip to content

Commit 1d448a3

Browse files
committed
New --output-json and --output-yaml flags for the following commands:
* conway query committee-state * conway query constitution * conway query drep-stake-distribution * conway query drep-state * conway query future-pparams * conway query gov-state * conway query proposals * conway query ratify-state * latest query committee-state * latest query constitution * latest query drep-stake-distribution * latest query drep-state * latest query future-pparams * latest query gov-state * latest query proposals * latest query ratify-state
1 parent 78c145a commit 1d448a3

21 files changed

+227
-24
lines changed

cardano-cli/src/Cardano/CLI/EraBased/Query/Command.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ data QueryRefScriptSizeCmdArgs = QueryRefScriptSizeCmdArgs
213213
data QueryNoArgCmdArgs era = QueryNoArgCmdArgs
214214
{ eon :: !(ConwayEraOnwards era)
215215
, commons :: !QueryCommons
216+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
216217
, mOutFile :: !(Maybe (File () Out))
217218
}
218219
deriving Show
@@ -222,6 +223,7 @@ data QueryDRepStateCmdArgs era = QueryDRepStateCmdArgs
222223
, commons :: !QueryCommons
223224
, drepHashSources :: !(AllOrOnly DRepHashSource)
224225
, includeStake :: !IncludeStake
226+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
225227
, mOutFile :: !(Maybe (File () Out))
226228
}
227229
deriving Show
@@ -230,6 +232,7 @@ data QueryProposalsCmdArgs era = QueryProposalsCmdArgs
230232
{ eon :: !(ConwayEraOnwards era)
231233
, commons :: !QueryCommons
232234
, govActionIds :: !(AllOrOnly L.GovActionId)
235+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
233236
, mOutFile :: !(Maybe (File () Out))
234237
}
235238
deriving Show
@@ -238,6 +241,7 @@ data QueryDRepStakeDistributionCmdArgs era = QueryDRepStakeDistributionCmdArgs
238241
{ eon :: !(ConwayEraOnwards era)
239242
, commons :: !QueryCommons
240243
, drepHashSources :: !(AllOrOnly DRepHashSource)
244+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
241245
, mOutFile :: !(Maybe (File () Out))
242246
}
243247
deriving Show
@@ -257,6 +261,7 @@ data QueryCommitteeMembersStateCmdArgs era = QueryCommitteeMembersStateCmdArgs
257261
, committeeColdKeys :: ![VerificationKeyOrHashOrFileOrScriptHash CommitteeColdKey]
258262
, committeeHotKeys :: ![VerificationKeyOrHashOrFileOrScriptHash CommitteeHotKey]
259263
, memberStatuses :: ![MemberStatus]
264+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
260265
, mOutFile :: !(Maybe (File () Out))
261266
}
262267
deriving Show

cardano-cli/src/Cardano/CLI/EraBased/Query/Option.hs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,11 @@ pQueryDRepStateCmd era envCli = do
684684
]
685685
]
686686
)
687+
<*> pFormatFlags
688+
"drep-state query output"
689+
[ flagFormatJson & setDefault
690+
, flagFormatYaml
691+
]
687692
<*> pMaybeOutputFile
688693

689694
pQueryDRepStakeDistributionCmd
@@ -705,6 +710,11 @@ pQueryDRepStakeDistributionCmd era envCli = do
705710
QueryDRepStakeDistributionCmdArgs w
706711
<$> pQueryCommons era envCli
707712
<*> pAllOrOnlyDRepHashSource
713+
<*> pFormatFlags
714+
"drep-stake-distribution query output"
715+
[ flagFormatJson & setDefault
716+
, flagFormatYaml
717+
]
708718
<*> pMaybeOutputFile
709719

710720
pQueryProposalsCmd
@@ -729,6 +739,11 @@ pQueryProposalsCmd era envCli = do
729739
QueryProposalsCmdArgs w
730740
<$> pQueryCommons (convert w) envCli
731741
<*> pAllOrOnlyGovActionIds
742+
<*> pFormatFlags
743+
"proposals query output"
744+
[ flagFormatJson & setDefault
745+
, flagFormatYaml
746+
]
732747
<*> optional pOutputFile
733748

734749
pQuerySPOStakeDistributionCmd
@@ -778,6 +793,11 @@ pQueryGetCommitteeStateCmd era envCli = do
778793
<*> many pCommitteeColdVerificationKeyOrHashOrFileOrScriptHash
779794
<*> many pCommitteeHotKeyOrHashOrFileOrScriptHash
780795
<*> many pMemberStatus
796+
<*> pFormatFlags
797+
"committee-state query output"
798+
[ flagFormatJson & setDefault
799+
, flagFormatYaml
800+
]
781801
<*> pMaybeOutputFile
782802

783803
pCommitteeColdVerificationKeyOrHashOrFileOrScriptHash
@@ -875,9 +895,14 @@ pQueryNoArgCmdArgs
875895
-> EnvCli
876896
-> String
877897
-> Parser (QueryNoArgCmdArgs era)
878-
pQueryNoArgCmdArgs w envCli _name =
898+
pQueryNoArgCmdArgs w envCli name =
879899
QueryNoArgCmdArgs w
880900
<$> pQueryCommons (convert w) envCli
901+
<*> pFormatFlags
902+
(name <> " query output")
903+
[ flagFormatJson & setDefault
904+
, flagFormatYaml
905+
]
881906
<*> pMaybeOutputFile
882907

883908
pQueryCommons

cardano-cli/src/Cardano/CLI/EraBased/Query/Run.hs

Lines changed: 111 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ import Cardano.Slotting.Time (RelativeTime (..), toRelativeTime)
6969

7070
import Control.Monad (forM, join)
7171
import Data.Aeson as Aeson
72-
import Data.Aeson qualified as A
7372
import Data.Aeson.Encode.Pretty qualified as Aeson
7473
import Data.Bifunctor (Bifunctor (..))
7574
import Data.ByteString.Base16.Lazy qualified as Base16
@@ -1663,10 +1662,23 @@ runQueryConstitution
16631662
{ Cmd.nodeConnInfo
16641663
, Cmd.target
16651664
}
1665+
, Cmd.outputFormat
16661666
, Cmd.mOutFile
16671667
} = conwayEraOnwardsConstraints eon $ do
16681668
constitution <- runQuery nodeConnInfo target $ queryConstitution eon
1669-
writeOutput mOutFile constitution
1669+
1670+
let output =
1671+
outputFormat
1672+
& ( id
1673+
. Vary.on (\FormatJson -> Json.encodeJson)
1674+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1675+
$ Vary.exhaustiveCase
1676+
)
1677+
$ constitution
1678+
1679+
firstExceptT QueryCmdWriteFileError
1680+
. newExceptT
1681+
$ writeLazyByteStringOutput mOutFile output
16701682

16711683
runQueryGovState
16721684
:: Cmd.QueryNoArgCmdArgs era
@@ -1679,10 +1691,23 @@ runQueryGovState
16791691
{ Cmd.nodeConnInfo
16801692
, Cmd.target
16811693
}
1694+
, Cmd.outputFormat
16821695
, Cmd.mOutFile
16831696
} = conwayEraOnwardsConstraints eon $ do
16841697
govState <- runQuery nodeConnInfo target $ queryGovState eon
1685-
writeOutput mOutFile govState
1698+
1699+
let output =
1700+
outputFormat
1701+
& ( id
1702+
. Vary.on (\FormatJson -> Json.encodeJson)
1703+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1704+
$ Vary.exhaustiveCase
1705+
)
1706+
$ govState
1707+
1708+
firstExceptT QueryCmdWriteFileError
1709+
. newExceptT
1710+
$ writeLazyByteStringOutput mOutFile output
16861711

16871712
runQueryRatifyState
16881713
:: Cmd.QueryNoArgCmdArgs era
@@ -1695,10 +1720,23 @@ runQueryRatifyState
16951720
{ Cmd.nodeConnInfo
16961721
, Cmd.target
16971722
}
1723+
, Cmd.outputFormat
16981724
, Cmd.mOutFile
16991725
} = conwayEraOnwardsConstraints eon $ do
17001726
ratifyState <- runQuery nodeConnInfo target $ queryRatifyState eon
1701-
writeOutput mOutFile ratifyState
1727+
1728+
let output =
1729+
outputFormat
1730+
& ( id
1731+
. Vary.on (\FormatJson -> Json.encodeJson)
1732+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1733+
$ Vary.exhaustiveCase
1734+
)
1735+
$ ratifyState
1736+
1737+
firstExceptT QueryCmdWriteFileError
1738+
. newExceptT
1739+
$ writeLazyByteStringOutput mOutFile output
17021740

17031741
runQueryFuturePParams
17041742
:: Cmd.QueryNoArgCmdArgs era
@@ -1711,10 +1749,23 @@ runQueryFuturePParams
17111749
{ Cmd.nodeConnInfo
17121750
, Cmd.target
17131751
}
1752+
, Cmd.outputFormat
17141753
, Cmd.mOutFile
17151754
} = conwayEraOnwardsConstraints eon $ do
17161755
futurePParams <- runQuery nodeConnInfo target $ queryFuturePParams eon
1717-
writeOutput mOutFile futurePParams
1756+
1757+
let output =
1758+
outputFormat
1759+
& ( id
1760+
. Vary.on (\FormatJson -> Json.encodeJson)
1761+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1762+
$ Vary.exhaustiveCase
1763+
)
1764+
$ futurePParams
1765+
1766+
firstExceptT QueryCmdWriteFileError
1767+
. newExceptT
1768+
$ writeLazyByteStringOutput mOutFile output
17181769

17191770
runQueryDRepState
17201771
:: Cmd.QueryDRepStateCmdArgs era
@@ -1729,6 +1780,7 @@ runQueryDRepState
17291780
{ Cmd.nodeConnInfo
17301781
, Cmd.target
17311782
}
1783+
, Cmd.outputFormat
17321784
, Cmd.mOutFile
17331785
} = conwayEraOnwardsConstraints eon $ do
17341786
let drepHashSources = case drepHashSources' of All -> []; Only l -> l
@@ -1744,9 +1796,20 @@ runQueryDRepState
17441796
Cmd.NoStake -> return mempty
17451797

17461798
let assocs :: [(L.Credential L.DRepRole, L.DRepState)] = Map.assocs drepState
1747-
toWrite = toDRepStateOutput drepStakeDistribution <$> assocs
1799+
drepStateOutputs = toDRepStateOutput drepStakeDistribution <$> assocs
17481800

1749-
writeOutput mOutFile toWrite
1801+
let output =
1802+
outputFormat
1803+
& ( id
1804+
. Vary.on (\FormatJson -> Json.encodeJson)
1805+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1806+
$ Vary.exhaustiveCase
1807+
)
1808+
$ drepStateOutputs
1809+
1810+
firstExceptT QueryCmdWriteFileError
1811+
. newExceptT
1812+
$ writeLazyByteStringOutput mOutFile output
17501813
where
17511814
toDRepStateOutput
17521815
:: ()
@@ -1774,6 +1837,7 @@ runQueryDRepStakeDistribution
17741837
, Cmd.target
17751838
}
17761839
, Cmd.drepHashSources = drepHashSources'
1840+
, Cmd.outputFormat
17771841
, Cmd.mOutFile
17781842
} = conwayEraOnwardsConstraints eon $ do
17791843
let drepFromSource =
@@ -1786,8 +1850,19 @@ runQueryDRepStakeDistribution
17861850
dreps <- fromList <$> mapM drepFromSource drepHashSources
17871851

17881852
drepStakeDistribution <- runQuery nodeConnInfo target $ queryDRepStakeDistribution eon dreps
1789-
writeOutput mOutFile $
1790-
Map.assocs drepStakeDistribution
1853+
1854+
let output =
1855+
outputFormat
1856+
& ( id
1857+
. Vary.on (\FormatJson -> Json.encodeJson)
1858+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1859+
$ Vary.exhaustiveCase
1860+
)
1861+
$ drepStakeDistribution
1862+
1863+
firstExceptT QueryCmdWriteFileError
1864+
. newExceptT
1865+
$ writeLazyByteStringOutput mOutFile output
17911866

17921867
runQuerySPOStakeDistribution
17931868
:: Cmd.QuerySPOStakeDistributionCmdArgs era
@@ -1880,6 +1955,7 @@ runQueryCommitteeMembersState
18801955
, Cmd.committeeColdKeys = coldCredKeys
18811956
, Cmd.committeeHotKeys = hotCredKeys
18821957
, Cmd.memberStatuses = memberStatuses
1958+
, Cmd.outputFormat
18831959
, Cmd.mOutFile
18841960
} = conwayEraOnwardsConstraints eon $ do
18851961
let coldKeysFromVerKeyHashOrFile =
@@ -1895,7 +1971,19 @@ runQueryCommitteeMembersState
18951971
committeeState <-
18961972
runQuery nodeConnInfo target $
18971973
queryCommitteeMembersState eon coldKeys hotKeys (fromList memberStatuses)
1898-
writeOutput mOutFile $ A.toJSON committeeState
1974+
1975+
let output =
1976+
outputFormat
1977+
& ( id
1978+
. Vary.on (\FormatJson -> Json.encodeJson)
1979+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1980+
$ Vary.exhaustiveCase
1981+
)
1982+
$ committeeState
1983+
1984+
firstExceptT QueryCmdWriteFileError
1985+
. newExceptT
1986+
$ writeLazyByteStringOutput mOutFile output
18991987

19001988
runQueryTreasuryValue
19011989
:: Cmd.QueryTreasuryValueCmdArgs era
@@ -1931,6 +2019,7 @@ runQueryProposals
19312019
, Cmd.target
19322020
}
19332021
, Cmd.govActionIds = govActionIds'
2022+
, Cmd.outputFormat
19342023
, Cmd.mOutFile
19352024
} = conwayEraOnwardsConstraints eon $ do
19362025
let govActionIds = case govActionIds' of
@@ -1940,7 +2029,18 @@ runQueryProposals
19402029
govActionStates :: (Seq.Seq (L.GovActionState (ShelleyLedgerEra era))) <-
19412030
runQuery nodeConnInfo target $ queryProposals eon $ Set.fromList govActionIds
19422031

1943-
writeOutput mOutFile govActionStates
2032+
let output =
2033+
outputFormat
2034+
& ( id
2035+
. Vary.on (\FormatJson -> Json.encodeJson)
2036+
. Vary.on (\FormatYaml -> Json.encodeYaml)
2037+
$ Vary.exhaustiveCase
2038+
)
2039+
$ govActionStates
2040+
2041+
firstExceptT QueryCmdWriteFileError
2042+
. newExceptT
2043+
$ writeLazyByteStringOutput mOutFile output
19442044

19452045
runQueryEraHistoryCmd :: Cmd.QueryEraHistoryCmdArgs -> ExceptT QueryCmdError IO ()
19462046
runQueryEraHistoryCmd
@@ -2022,17 +2122,6 @@ runQuery localNodeConnInfo target query =
20222122
& onLeft (left . QueryCmdUnsupportedNtcVersion)
20232123
& onLeft (left . QueryCmdEraMismatch)
20242124

2025-
writeOutput
2026-
:: ToJSON b
2027-
=> Maybe (File a Out)
2028-
-> b
2029-
-> ExceptT QueryCmdError IO ()
2030-
writeOutput mOutFile content = case mOutFile of
2031-
Nothing -> liftIO . LBS.putStrLn . Aeson.encodePretty $ content
2032-
Just (File f) ->
2033-
handleIOExceptT (QueryCmdWriteFileError . FileIOError f) $
2034-
LBS.writeFile f (Aeson.encodePretty content)
2035-
20362125
-- Helpers
20372126

20382127
toEpochInfo :: EraHistory -> EpochInfo (Either Text)

0 commit comments

Comments
 (0)