Skip to content

Commit

Permalink
Update get tip cli command with new api
Browse files Browse the repository at this point in the history
  • Loading branch information
Jimbo4350 committed Jan 19, 2021
1 parent fc5e9fa commit 9bd8152
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 23 deletions.
26 changes: 18 additions & 8 deletions cardano-api/src/Cardano/Api/Block.hs
Expand Up @@ -37,27 +37,30 @@ module Cardano.Api.Block (

import Prelude

import Data.Aeson (ToJSON (..), object, (.=))
import qualified Data.Aeson as Aeson
import qualified Data.ByteString as BS
import qualified Data.ByteString.Short as SBS
import qualified Data.Text.Encoding as Text

import Cardano.Slotting.Block (BlockNo)
import Cardano.Slotting.Slot (SlotNo, EpochNo)
import Cardano.Slotting.Slot (EpochNo, SlotNo)

import qualified Ouroboros.Network.Block as Consensus

import qualified Ouroboros.Consensus.Block as Consensus
import qualified Ouroboros.Consensus.Block as Consensus
import qualified Ouroboros.Consensus.Byron.Ledger as Consensus
import qualified Ouroboros.Consensus.Cardano.Block as Consensus
import qualified Ouroboros.Consensus.Cardano.ByronHFC as Consensus
import qualified Ouroboros.Consensus.Cardano.ShelleyHFC as Consensus
import qualified Ouroboros.Consensus.HardFork.Combinator as Consensus
import qualified Ouroboros.Consensus.HardFork.Combinator.Degenerate as Consensus
import qualified Ouroboros.Consensus.Byron.Ledger as Consensus
import qualified Ouroboros.Consensus.Shelley.Ledger as Consensus
import qualified Ouroboros.Consensus.Cardano.Block as Consensus
import qualified Ouroboros.Consensus.Cardano.ByronHFC as Consensus
import qualified Ouroboros.Consensus.Cardano.ShelleyHFC as Consensus
import qualified Ouroboros.Consensus.Shelley.Ledger as Consensus


import Cardano.Api.Eras
import Cardano.Api.HasTypeProxy
import Cardano.Api.Hash
import Cardano.Api.HasTypeProxy
import Cardano.Api.Modes
import Cardano.Api.SerialiseRaw

Expand Down Expand Up @@ -184,6 +187,13 @@ data ChainPoint = ChainPointAtGenesis
| ChainPoint !SlotNo !(Hash BlockHeader)
deriving (Eq, Show)

instance ToJSON ChainPoint where
toJSON ChainPointAtGenesis = Aeson.String "Tip is currently at genesis block"
toJSON (ChainPoint slot (HeaderHash bs)) =
object [ "Slot Number" .= slot
, "Slot Header Hash" .= Text.decodeUtf8 (SBS.fromShort bs)
]


toConsensusPointInMode :: ConsensusMode mode
-> ChainPoint
Expand Down
2 changes: 1 addition & 1 deletion cardano-cli/src/Cardano/CLI/Shelley/Commands.hs
Expand Up @@ -273,7 +273,7 @@ renderPoolCmd cmd =

data QueryCmd =
QueryProtocolParameters AnyCardanoEra AnyConsensusModeParams NetworkId (Maybe OutputFile)
| QueryTip Protocol NetworkId (Maybe OutputFile)
| QueryTip AnyConsensusModeParams NetworkId (Maybe OutputFile)
| QueryStakeDistribution AnyCardanoEra AnyConsensusModeParams NetworkId (Maybe OutputFile)
| QueryStakeAddressInfo AnyCardanoEra AnyConsensusModeParams StakeAddress NetworkId (Maybe OutputFile)
| QueryUTxO AnyCardanoEra Protocol QueryFilter NetworkId (Maybe OutputFile)
Expand Down
2 changes: 1 addition & 1 deletion cardano-cli/src/Cardano/CLI/Shelley/Parsers.hs
Expand Up @@ -669,7 +669,7 @@ pQueryCmd =

pQueryTip :: Parser QueryCmd
pQueryTip = QueryTip
<$> pProtocol
<$> pConsensusModeParams
<*> pNetworkId
<*> pMaybeOutputFile

Expand Down
27 changes: 14 additions & 13 deletions cardano-cli/src/Cardano/CLI/Shelley/Run/Query.hs
Expand Up @@ -39,6 +39,7 @@ import Cardano.Api.Byron
import qualified Cardano.Api.IPC as NewIPC
import Cardano.Api.LocalChainSync (getLocalTip)
import Cardano.Api.Modes (AnyConsensusModeParams (..), toEraInMode)
import qualified Cardano.Api.Modes as Mode
import Cardano.Api.Protocol
import Cardano.Api.ProtocolParameters
import Cardano.Api.Shelley
Expand Down Expand Up @@ -103,8 +104,8 @@ runQueryCmd cmd =
case cmd of
QueryProtocolParameters era consensusModeParams network mOutFile ->
runQueryProtocolParameters era consensusModeParams network mOutFile
QueryTip protocol network mOutFile ->
runQueryTip protocol network mOutFile
QueryTip consensusModeParams network mOutFile ->
runQueryTip consensusModeParams network mOutFile
QueryStakeDistribution era consensusModeParams network mOutFile ->
runQueryStakeDistribution era consensusModeParams network mOutFile
QueryStakeAddressInfo era consensusModeParams addr network mOutFile ->
Expand Down Expand Up @@ -152,21 +153,21 @@ writeProtocolParameters mOutFile pparams =
LBS.writeFile fpath (encodePretty pparams)

runQueryTip
:: Protocol
:: AnyConsensusModeParams
-> NetworkId
-> Maybe OutputFile
-> ExceptT ShelleyQueryCmdError IO ()
runQueryTip protocol network mOutFile = do
runQueryTip (AnyConsensusModeParams cModeParams) network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
output <-
firstExceptT ShelleyQueryCmdLocalStateQueryError $
withlocalNodeConnectInfo protocol network sockPath $ \connectInfo -> do
tip <- liftIO $ getLocalTip connectInfo
let output = case localNodeConsensusMode connectInfo of
ByronMode{} -> encodePretty tip
ShelleyMode{} -> encodePretty tip
CardanoMode{} -> encodePretty tip
return output
let localNodeConnInfo = NewIPC.LocalNodeConnectInfo cModeParams network sockPath

tip <- liftIO $ NewIPC.getLocalChainTip localNodeConnInfo

let output = case NewIPC.localConsensusMode localNodeConnInfo of
Mode.ByronMode -> encodePretty tip
Mode.ShelleyMode -> encodePretty tip
Mode.CardanoMode -> encodePretty tip

case mOutFile of
Just (OutputFile fpath) -> liftIO $ LBS.writeFile fpath output
Nothing -> liftIO $ LBS.putStrLn output
Expand Down

0 comments on commit 9bd8152

Please sign in to comment.