Skip to content

Commit dd2035d

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 67e9c20 commit dd2035d

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
@@ -214,6 +214,7 @@ data QueryRefScriptSizeCmdArgs = QueryRefScriptSizeCmdArgs
214214
data QueryNoArgCmdArgs era = QueryNoArgCmdArgs
215215
{ eon :: !(ConwayEraOnwards era)
216216
, commons :: !QueryCommons
217+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
217218
, mOutFile :: !(Maybe (File () Out))
218219
}
219220
deriving Show
@@ -223,6 +224,7 @@ data QueryDRepStateCmdArgs era = QueryDRepStateCmdArgs
223224
, commons :: !QueryCommons
224225
, drepHashSources :: !(AllOrOnly DRepHashSource)
225226
, includeStake :: !IncludeStake
227+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
226228
, mOutFile :: !(Maybe (File () Out))
227229
}
228230
deriving Show
@@ -231,6 +233,7 @@ data QueryProposalsCmdArgs era = QueryProposalsCmdArgs
231233
{ eon :: !(ConwayEraOnwards era)
232234
, commons :: !QueryCommons
233235
, govActionIds :: !(AllOrOnly L.GovActionId)
236+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
234237
, mOutFile :: !(Maybe (File () Out))
235238
}
236239
deriving Show
@@ -239,6 +242,7 @@ data QueryDRepStakeDistributionCmdArgs era = QueryDRepStakeDistributionCmdArgs
239242
{ eon :: !(ConwayEraOnwards era)
240243
, commons :: !QueryCommons
241244
, drepHashSources :: !(AllOrOnly DRepHashSource)
245+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
242246
, mOutFile :: !(Maybe (File () Out))
243247
}
244248
deriving Show
@@ -258,6 +262,7 @@ data QueryCommitteeMembersStateCmdArgs era = QueryCommitteeMembersStateCmdArgs
258262
, committeeColdKeys :: ![VerificationKeyOrHashOrFileOrScriptHash CommitteeColdKey]
259263
, committeeHotKeys :: ![VerificationKeyOrHashOrFileOrScriptHash CommitteeHotKey]
260264
, memberStatuses :: ![MemberStatus]
265+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
261266
, mOutFile :: !(Maybe (File () Out))
262267
}
263268
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
@@ -692,6 +692,11 @@ pQueryDRepStateCmd era envCli = do
692692
]
693693
]
694694
)
695+
<*> pFormatFlags
696+
"drep-state query output"
697+
[ flagFormatJson & setDefault
698+
, flagFormatYaml
699+
]
695700
<*> pMaybeOutputFile
696701

697702
pQueryDRepStakeDistributionCmd
@@ -713,6 +718,11 @@ pQueryDRepStakeDistributionCmd era envCli = do
713718
QueryDRepStakeDistributionCmdArgs w
714719
<$> pQueryCommons era envCli
715720
<*> pAllOrOnlyDRepHashSource
721+
<*> pFormatFlags
722+
"drep-stake-distribution query output"
723+
[ flagFormatJson & setDefault
724+
, flagFormatYaml
725+
]
716726
<*> pMaybeOutputFile
717727

718728
pQueryProposalsCmd
@@ -737,6 +747,11 @@ pQueryProposalsCmd era envCli = do
737747
QueryProposalsCmdArgs w
738748
<$> pQueryCommons (convert w) envCli
739749
<*> pAllOrOnlyGovActionIds
750+
<*> pFormatFlags
751+
"proposals query output"
752+
[ flagFormatJson & setDefault
753+
, flagFormatYaml
754+
]
740755
<*> optional pOutputFile
741756

742757
pQuerySPOStakeDistributionCmd
@@ -786,6 +801,11 @@ pQueryGetCommitteeStateCmd era envCli = do
786801
<*> many pCommitteeColdVerificationKeyOrHashOrFileOrScriptHash
787802
<*> many pCommitteeHotKeyOrHashOrFileOrScriptHash
788803
<*> many pMemberStatus
804+
<*> pFormatFlags
805+
"committee-state query output"
806+
[ flagFormatJson & setDefault
807+
, flagFormatYaml
808+
]
789809
<*> pMaybeOutputFile
790810

791811
pCommitteeColdVerificationKeyOrHashOrFileOrScriptHash
@@ -883,9 +903,14 @@ pQueryNoArgCmdArgs
883903
-> EnvCli
884904
-> String
885905
-> Parser (QueryNoArgCmdArgs era)
886-
pQueryNoArgCmdArgs w envCli _name =
906+
pQueryNoArgCmdArgs w envCli name =
887907
QueryNoArgCmdArgs w
888908
<$> pQueryCommons (convert w) envCli
909+
<*> pFormatFlags
910+
(name <> " query output")
911+
[ flagFormatJson & setDefault
912+
, flagFormatYaml
913+
]
889914
<*> pMaybeOutputFile
890915

891916
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
@@ -1676,10 +1675,23 @@ runQueryConstitution
16761675
{ Cmd.nodeConnInfo
16771676
, Cmd.target
16781677
}
1678+
, Cmd.outputFormat
16791679
, Cmd.mOutFile
16801680
} = conwayEraOnwardsConstraints eon $ do
16811681
constitution <- runQuery nodeConnInfo target $ queryConstitution eon
1682-
writeOutput mOutFile constitution
1682+
1683+
let output =
1684+
outputFormat
1685+
& ( id
1686+
. Vary.on (\FormatJson -> Json.encodeJson)
1687+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1688+
$ Vary.exhaustiveCase
1689+
)
1690+
$ constitution
1691+
1692+
firstExceptT QueryCmdWriteFileError
1693+
. newExceptT
1694+
$ writeLazyByteStringOutput mOutFile output
16831695

16841696
runQueryGovState
16851697
:: Cmd.QueryNoArgCmdArgs era
@@ -1692,10 +1704,23 @@ runQueryGovState
16921704
{ Cmd.nodeConnInfo
16931705
, Cmd.target
16941706
}
1707+
, Cmd.outputFormat
16951708
, Cmd.mOutFile
16961709
} = conwayEraOnwardsConstraints eon $ do
16971710
govState <- runQuery nodeConnInfo target $ queryGovState eon
1698-
writeOutput mOutFile govState
1711+
1712+
let output =
1713+
outputFormat
1714+
& ( id
1715+
. Vary.on (\FormatJson -> Json.encodeJson)
1716+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1717+
$ Vary.exhaustiveCase
1718+
)
1719+
$ govState
1720+
1721+
firstExceptT QueryCmdWriteFileError
1722+
. newExceptT
1723+
$ writeLazyByteStringOutput mOutFile output
16991724

17001725
runQueryRatifyState
17011726
:: Cmd.QueryNoArgCmdArgs era
@@ -1708,10 +1733,23 @@ runQueryRatifyState
17081733
{ Cmd.nodeConnInfo
17091734
, Cmd.target
17101735
}
1736+
, Cmd.outputFormat
17111737
, Cmd.mOutFile
17121738
} = conwayEraOnwardsConstraints eon $ do
17131739
ratifyState <- runQuery nodeConnInfo target $ queryRatifyState eon
1714-
writeOutput mOutFile ratifyState
1740+
1741+
let output =
1742+
outputFormat
1743+
& ( id
1744+
. Vary.on (\FormatJson -> Json.encodeJson)
1745+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1746+
$ Vary.exhaustiveCase
1747+
)
1748+
$ ratifyState
1749+
1750+
firstExceptT QueryCmdWriteFileError
1751+
. newExceptT
1752+
$ writeLazyByteStringOutput mOutFile output
17151753

17161754
runQueryFuturePParams
17171755
:: Cmd.QueryNoArgCmdArgs era
@@ -1724,10 +1762,23 @@ runQueryFuturePParams
17241762
{ Cmd.nodeConnInfo
17251763
, Cmd.target
17261764
}
1765+
, Cmd.outputFormat
17271766
, Cmd.mOutFile
17281767
} = conwayEraOnwardsConstraints eon $ do
17291768
futurePParams <- runQuery nodeConnInfo target $ queryFuturePParams eon
1730-
writeOutput mOutFile futurePParams
1769+
1770+
let output =
1771+
outputFormat
1772+
& ( id
1773+
. Vary.on (\FormatJson -> Json.encodeJson)
1774+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1775+
$ Vary.exhaustiveCase
1776+
)
1777+
$ futurePParams
1778+
1779+
firstExceptT QueryCmdWriteFileError
1780+
. newExceptT
1781+
$ writeLazyByteStringOutput mOutFile output
17311782

17321783
runQueryDRepState
17331784
:: Cmd.QueryDRepStateCmdArgs era
@@ -1742,6 +1793,7 @@ runQueryDRepState
17421793
{ Cmd.nodeConnInfo
17431794
, Cmd.target
17441795
}
1796+
, Cmd.outputFormat
17451797
, Cmd.mOutFile
17461798
} = conwayEraOnwardsConstraints eon $ do
17471799
let drepHashSources = case drepHashSources' of All -> []; Only l -> l
@@ -1757,9 +1809,20 @@ runQueryDRepState
17571809
Cmd.NoStake -> return mempty
17581810

17591811
let assocs :: [(L.Credential L.DRepRole, L.DRepState)] = Map.assocs drepState
1760-
toWrite = toDRepStateOutput drepStakeDistribution <$> assocs
1812+
drepStateOutputs = toDRepStateOutput drepStakeDistribution <$> assocs
17611813

1762-
writeOutput mOutFile toWrite
1814+
let output =
1815+
outputFormat
1816+
& ( id
1817+
. Vary.on (\FormatJson -> Json.encodeJson)
1818+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1819+
$ Vary.exhaustiveCase
1820+
)
1821+
$ drepStateOutputs
1822+
1823+
firstExceptT QueryCmdWriteFileError
1824+
. newExceptT
1825+
$ writeLazyByteStringOutput mOutFile output
17631826
where
17641827
toDRepStateOutput
17651828
:: ()
@@ -1787,6 +1850,7 @@ runQueryDRepStakeDistribution
17871850
, Cmd.target
17881851
}
17891852
, Cmd.drepHashSources = drepHashSources'
1853+
, Cmd.outputFormat
17901854
, Cmd.mOutFile
17911855
} = conwayEraOnwardsConstraints eon $ do
17921856
let drepFromSource =
@@ -1799,8 +1863,19 @@ runQueryDRepStakeDistribution
17991863
dreps <- fromList <$> mapM drepFromSource drepHashSources
18001864

18011865
drepStakeDistribution <- runQuery nodeConnInfo target $ queryDRepStakeDistribution eon dreps
1802-
writeOutput mOutFile $
1803-
Map.assocs drepStakeDistribution
1866+
1867+
let output =
1868+
outputFormat
1869+
& ( id
1870+
. Vary.on (\FormatJson -> Json.encodeJson)
1871+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1872+
$ Vary.exhaustiveCase
1873+
)
1874+
$ drepStakeDistribution
1875+
1876+
firstExceptT QueryCmdWriteFileError
1877+
. newExceptT
1878+
$ writeLazyByteStringOutput mOutFile output
18041879

18051880
runQuerySPOStakeDistribution
18061881
:: Cmd.QuerySPOStakeDistributionCmdArgs era
@@ -1896,6 +1971,7 @@ runQueryCommitteeMembersState
18961971
, Cmd.committeeColdKeys = coldCredKeys
18971972
, Cmd.committeeHotKeys = hotCredKeys
18981973
, Cmd.memberStatuses = memberStatuses
1974+
, Cmd.outputFormat
18991975
, Cmd.mOutFile
19001976
} = conwayEraOnwardsConstraints eon $ do
19011977
let coldKeysFromVerKeyHashOrFile =
@@ -1911,7 +1987,19 @@ runQueryCommitteeMembersState
19111987
committeeState <-
19121988
runQuery nodeConnInfo target $
19131989
queryCommitteeMembersState eon coldKeys hotKeys (fromList memberStatuses)
1914-
writeOutput mOutFile $ A.toJSON committeeState
1990+
1991+
let output =
1992+
outputFormat
1993+
& ( id
1994+
. Vary.on (\FormatJson -> Json.encodeJson)
1995+
. Vary.on (\FormatYaml -> Json.encodeYaml)
1996+
$ Vary.exhaustiveCase
1997+
)
1998+
$ committeeState
1999+
2000+
firstExceptT QueryCmdWriteFileError
2001+
. newExceptT
2002+
$ writeLazyByteStringOutput mOutFile output
19152003

19162004
runQueryTreasuryValue
19172005
:: Cmd.QueryTreasuryValueCmdArgs era
@@ -1947,6 +2035,7 @@ runQueryProposals
19472035
, Cmd.target
19482036
}
19492037
, Cmd.govActionIds = govActionIds'
2038+
, Cmd.outputFormat
19502039
, Cmd.mOutFile
19512040
} = conwayEraOnwardsConstraints eon $ do
19522041
let govActionIds = case govActionIds' of
@@ -1956,7 +2045,18 @@ runQueryProposals
19562045
govActionStates :: (Seq.Seq (L.GovActionState (ShelleyLedgerEra era))) <-
19572046
runQuery nodeConnInfo target $ queryProposals eon $ Set.fromList govActionIds
19582047

1959-
writeOutput mOutFile govActionStates
2048+
let output =
2049+
outputFormat
2050+
& ( id
2051+
. Vary.on (\FormatJson -> Json.encodeJson)
2052+
. Vary.on (\FormatYaml -> Json.encodeYaml)
2053+
$ Vary.exhaustiveCase
2054+
)
2055+
$ govActionStates
2056+
2057+
firstExceptT QueryCmdWriteFileError
2058+
. newExceptT
2059+
$ writeLazyByteStringOutput mOutFile output
19602060

19612061
runQueryEraHistoryCmd :: Cmd.QueryEraHistoryCmdArgs -> ExceptT QueryCmdError IO ()
19622062
runQueryEraHistoryCmd
@@ -2038,17 +2138,6 @@ runQuery localNodeConnInfo target query =
20382138
& onLeft (left . QueryCmdUnsupportedNtcVersion)
20392139
& onLeft (left . QueryCmdEraMismatch)
20402140

2041-
writeOutput
2042-
:: ToJSON b
2043-
=> Maybe (File a Out)
2044-
-> b
2045-
-> ExceptT QueryCmdError IO ()
2046-
writeOutput mOutFile content = case mOutFile of
2047-
Nothing -> liftIO . LBS.putStrLn . Aeson.encodePretty $ content
2048-
Just (File f) ->
2049-
handleIOExceptT (QueryCmdWriteFileError . FileIOError f) $
2050-
LBS.writeFile f (Aeson.encodePretty content)
2051-
20522141
-- Helpers
20532142

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

0 commit comments

Comments
 (0)