Skip to content

Commit 3affc83

Browse files
committed
Standardise on default output format of json for 'query ledger-peer-snapshot' command. Also support json-pretty and yaml output.
1 parent 4b96894 commit 3affc83

File tree

7 files changed

+66
-31
lines changed

7 files changed

+66
-31
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ data QueryLedgerStateCmdArgs = QueryLedgerStateCmdArgs
149149

150150
data QueryLedgerPeerSnapshotCmdArgs = QueryLedgerPeerSnapshotCmdArgs
151151
{ commons :: !QueryCommons
152+
, outputFormat :: !(Vary [FormatJson, FormatYaml])
152153
, mOutFile :: !(Maybe (File () Out))
153154
}
154155
deriving (Generic, Show)

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,11 @@ pQueryLedgerPeerSnapshotCmd era envCli =
427427
fmap QueryLedgerPeerSnapshotCmd $
428428
QueryLedgerPeerSnapshotCmdArgs
429429
<$> pQueryCommons era envCli
430+
<*> pFormatFlags
431+
"ledger-peer-snapshot output"
432+
[ flagFormatJson & setDefault
433+
, flagFormatYaml
434+
]
430435
<*> pMaybeOutputFile
431436

432437
pQueryProtocolStateCmd :: ShelleyBasedEra era -> EnvCli -> Parser (QueryCmds era)

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

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ import Data.Text.Encoding qualified as Text
9292
import Data.Text.IO qualified as T
9393
import Data.Text.Lazy.IO qualified as LT
9494
import Data.Time.Clock
95+
import Data.Yaml qualified as Yaml
9596
import GHC.Exts (IsList (..))
9697
import GHC.Generics
9798
import Lens.Micro ((^.))
@@ -852,25 +853,50 @@ runQueryLedgerPeerSnapshot
852853
{ Cmd.nodeConnInfo
853854
, Cmd.target
854855
}
856+
, Cmd.outputFormat
855857
, Cmd.mOutFile
856858
} = do
857-
join $
858-
lift
859-
( executeLocalStateQueryExpr nodeConnInfo target $ runExceptT $ do
860-
AnyCardanoEra era <-
861-
lift queryCurrentEra
862-
& onLeft (left . QueryCmdUnsupportedNtcVersion)
859+
result <-
860+
join $
861+
lift
862+
( executeLocalStateQueryExpr nodeConnInfo target $ runExceptT $ do
863+
AnyCardanoEra era <-
864+
lift queryCurrentEra
865+
& onLeft (left . QueryCmdUnsupportedNtcVersion)
863866

864-
sbe <-
865-
requireShelleyBasedEra era
866-
& onNothing (left QueryCmdByronEra)
867+
sbe <-
868+
requireShelleyBasedEra era
869+
& onNothing (left QueryCmdByronEra)
867870

868-
result <- easyRunQuery (queryLedgerPeerSnapshot sbe)
871+
result <- easyRunQuery (queryLedgerPeerSnapshot sbe)
869872

870-
pure $ shelleyBasedEraConstraints sbe (writeLedgerPeerSnapshot mOutFile) result
871-
)
872-
& onLeft (left . QueryCmdAcquireFailure)
873-
& onLeft left
873+
pure $
874+
shelleyBasedEraConstraints sbe $
875+
case decodeBigLedgerPeerSnapshot result of
876+
Left (bs, _decoderError) -> pure $ Left bs
877+
Right snapshot -> pure $ Right snapshot
878+
)
879+
& onLeft (left . QueryCmdAcquireFailure)
880+
& onLeft left
881+
882+
case result of
883+
Left (bs :: LBS.ByteString) -> do
884+
firstExceptT QueryCmdHelpersError $ pPrintCBOR bs
885+
Right (snapshot :: LedgerPeerSnapshot) -> do
886+
outputContents <-
887+
outputFormat
888+
& ( id
889+
. Vary.on (\FormatJson -> pure $ encodePretty snapshot)
890+
. Vary.on (\FormatYaml -> pure $ LBS.fromStrict $ Yaml.encode snapshot)
891+
$ Vary.exhaustiveCase
892+
)
893+
894+
let writeOutputContents =
895+
case mOutFile of
896+
Nothing -> liftIO . LBS.putStrLn
897+
Just (File outFile) -> liftIO . LBS.writeFile outFile
898+
899+
writeOutputContents outputContents
874900

875901
runQueryProtocolStateCmd
876902
:: ()
@@ -1077,23 +1103,6 @@ writeStakeAddressInfo
10771103
mDRep = Map.lookup addr voteDelegatees
10781104
]
10791105

1080-
-- | Writes JSON-encoded big ledger peer snapshot
1081-
writeLedgerPeerSnapshot
1082-
:: Maybe (File () Out)
1083-
-> Serialised LedgerPeerSnapshot
1084-
-> ExceptT QueryCmdError IO ()
1085-
writeLedgerPeerSnapshot mOutPath serBigLedgerPeerSnapshot = do
1086-
case decodeBigLedgerPeerSnapshot serBigLedgerPeerSnapshot of
1087-
Left (bs, _decoderError) ->
1088-
firstExceptT QueryCmdHelpersError $ pPrintCBOR bs
1089-
Right snapshot ->
1090-
case mOutPath of
1091-
Nothing -> liftIO . LBS.putStrLn $ Aeson.encode snapshot
1092-
Just fpath ->
1093-
firstExceptT QueryCmdWriteFileError $
1094-
newExceptT . writeLazyByteStringFile fpath $
1095-
encodePretty snapshot
1096-
10971106
writeStakeSnapshots
10981107
:: forall era
10991108
. Maybe (File () Out)

cardano-cli/test/cardano-cli-golden/files/golden/help.cli

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,7 @@ Usage: cardano-cli query ledger-peer-snapshot
493493
[ --volatile-tip
494494
| --immutable-tip
495495
]
496+
[--output-json | --output-yaml]
496497
[--out-file FILEPATH]
497498

498499
Dump the current snapshot of big ledger peers. These are the largest pools
@@ -2048,6 +2049,9 @@ Usage: cardano-cli conway query ledger-peer-snapshot
20482049
[ --volatile-tip
20492050
| --immutable-tip
20502051
]
2052+
[ --output-json
2053+
| --output-yaml
2054+
]
20512055
[--out-file FILEPATH]
20522056

20532057
Dump the current snapshot of ledger peers.These are the largest pools that
@@ -4285,6 +4289,9 @@ Usage: cardano-cli latest query ledger-peer-snapshot
42854289
[ --volatile-tip
42864290
| --immutable-tip
42874291
]
4292+
[ --output-json
4293+
| --output-yaml
4294+
]
42884295
[--out-file FILEPATH]
42894296

42904297
Dump the current snapshot of ledger peers.These are the largest pools that

cardano-cli/test/cardano-cli-golden/files/golden/help/conway_query_ledger-peer-snapshot.cli

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ Usage: cardano-cli conway query ledger-peer-snapshot
88
[ --volatile-tip
99
| --immutable-tip
1010
]
11+
[ --output-json
12+
| --output-yaml
13+
]
1114
[--out-file FILEPATH]
1215

1316
Dump the current snapshot of ledger peers.These are the largest pools that
@@ -30,5 +33,7 @@ Available options:
3033
--volatile-tip Use the volatile tip as a target. (This is the
3134
default)
3235
--immutable-tip Use the immutable tip as a target.
36+
--output-json Format ledger-peer-snapshot output to JSON (default).
37+
--output-yaml Format ledger-peer-snapshot output to YAML.
3338
--out-file FILEPATH Optional output file. Default is to write to stdout.
3439
-h,--help Show this help text

cardano-cli/test/cardano-cli-golden/files/golden/help/latest_query_ledger-peer-snapshot.cli

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ Usage: cardano-cli latest query ledger-peer-snapshot
88
[ --volatile-tip
99
| --immutable-tip
1010
]
11+
[ --output-json
12+
| --output-yaml
13+
]
1114
[--out-file FILEPATH]
1215

1316
Dump the current snapshot of ledger peers.These are the largest pools that
@@ -30,5 +33,7 @@ Available options:
3033
--volatile-tip Use the volatile tip as a target. (This is the
3134
default)
3235
--immutable-tip Use the immutable tip as a target.
36+
--output-json Format ledger-peer-snapshot output to JSON (default).
37+
--output-yaml Format ledger-peer-snapshot output to YAML.
3338
--out-file FILEPATH Optional output file. Default is to write to stdout.
3439
-h,--help Show this help text

cardano-cli/test/cardano-cli-golden/files/golden/help/query_ledger-peer-snapshot.cli

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Usage: cardano-cli query ledger-peer-snapshot
88
[ --volatile-tip
99
| --immutable-tip
1010
]
11+
[--output-json | --output-yaml]
1112
[--out-file FILEPATH]
1213

1314
Dump the current snapshot of big ledger peers. These are the largest pools
@@ -30,5 +31,7 @@ Available options:
3031
--volatile-tip Use the volatile tip as a target. (This is the
3132
default)
3233
--immutable-tip Use the immutable tip as a target.
34+
--output-json Format ledger-peer-snapshot output to JSON (default).
35+
--output-yaml Format ledger-peer-snapshot output to YAML.
3336
--out-file FILEPATH Optional output file. Default is to write to stdout.
3437
-h,--help Show this help text

0 commit comments

Comments
 (0)