Skip to content

Commit

Permalink
Propagate cardano-api's SocketPath definition in cardano-cli
Browse files Browse the repository at this point in the history
  • Loading branch information
Jimbo4350 committed Sep 23, 2022
1 parent 221d6fa commit 4c59112
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 49 deletions.
8 changes: 3 additions & 5 deletions cardano-cli/src/Cardano/CLI/Byron/Query.hs
Expand Up @@ -9,16 +9,14 @@ module Cardano.CLI.Byron.Query
, runGetLocalNodeTip
) where

import Cardano.Api
import Cardano.Prelude

import Control.Monad.Trans.Except.Extra (firstExceptT)
import Control.Monad.Trans.Except.Extra (firstExceptT, newExceptT)
import Data.Aeson.Encode.Pretty (encodePretty)
import qualified Data.ByteString.Lazy as LB
import qualified Data.Text.Encoding as Text

import Cardano.Api
import Cardano.CLI.Environment (EnvSocketError, readEnvSocketPath, renderEnvSocketError)
import Cardano.CLI.Types (SocketPath (..))

{- HLINT ignore "Reduce duplication" -}

Expand All @@ -37,7 +35,7 @@ renderByronQueryError err =
runGetLocalNodeTip :: NetworkId -> ExceptT ByronQueryError IO ()
runGetLocalNodeTip networkId = do
SocketPath sockPath <- firstExceptT ByronQueryEnvVarSocketErr
readEnvSocketPath
$ newExceptT readEnvSocketPath
let connctInfo =
LocalNodeConnectInfo {
localNodeSocketPath = sockPath,
Expand Down
7 changes: 3 additions & 4 deletions cardano-cli/src/Cardano/CLI/Byron/Tx.hs
Expand Up @@ -25,7 +25,7 @@ where
import Cardano.Prelude hiding (option, trace, (%))
import Prelude (error)

import Control.Monad.Trans.Except.Extra (firstExceptT, left)
import Control.Monad.Trans.Except.Extra (firstExceptT, left, newExceptT)
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as LB
import qualified Data.Map.Strict as Map
Expand All @@ -44,9 +44,8 @@ import qualified Cardano.Crypto.Signing as Crypto

import Cardano.Api.Byron
import Cardano.CLI.Byron.Key (byronWitnessToVerKey)
import Cardano.CLI.Environment
import Cardano.CLI.Helpers (textShow)
import Cardano.CLI.Types (SocketPath (..), TxFile (..))
import Cardano.CLI.Types (TxFile (..))
import Ouroboros.Consensus.Byron.Ledger (ByronBlock, GenTx (..))
import qualified Ouroboros.Consensus.Byron.Ledger as Byron
import Ouroboros.Consensus.Cardano.Block (EraMismatch (..))
Expand Down Expand Up @@ -226,7 +225,7 @@ nodeSubmitTx
-> GenTx ByronBlock
-> ExceptT ByronTxError IO ()
nodeSubmitTx network gentx = do
SocketPath socketPath <- firstExceptT EnvSocketError readEnvSocketPath
SocketPath socketPath <- firstExceptT EnvSocketError $ newExceptT readEnvSocketPath
let connctInfo =
LocalNodeConnectInfo {
localNodeSocketPath = socketPath,
Expand Down
103 changes: 63 additions & 40 deletions cardano-cli/src/Cardano/CLI/Shelley/Run/Query.hs
Expand Up @@ -60,7 +60,6 @@ import qualified System.IO as IO
import Text.Printf (printf)

import Cardano.Binary (DecoderError)
import Cardano.CLI.Environment (EnvSocketError, readEnvSocketPath, renderEnvSocketError)
import Cardano.CLI.Helpers (HelpersError (..), hushM, pPrintCBOR, renderHelpersError)
import Cardano.CLI.Shelley.Commands
import Cardano.CLI.Shelley.Key (InputDecodeError, VerificationKeyOrHashOrFile,
Expand Down Expand Up @@ -114,7 +113,7 @@ data ShelleyQueryCmdError
| ShelleyQueryCmdLocalStateQueryError !ShelleyQueryCmdLocalStateQueryError
| ShelleyQueryCmdWriteFileError !(FileError ())
| ShelleyQueryCmdHelpersError !HelpersError
| ShelleyQueryCmdAcquireFailure !AcquireFailure
| ShelleyQueryCmdAcquireFailure !AcquiringFailure
| ShelleyQueryCmdEraConsensusModeMismatch !AnyConsensusMode !AnyCardanoEra
| ShelleyQueryCmdByronEra
| ShelleyQueryCmdPoolIdError (Hash StakePoolKey)
Expand Down Expand Up @@ -207,7 +206,7 @@ runQueryProtocolParameters
-> ExceptT ShelleyQueryCmdError IO ()
runQueryProtocolParameters (AnyConsensusModeParams cModeParams) network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
readEnvSocketPath
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

result <- liftIO $ executeLocalStateQueryExpr localNodeConnInfo Nothing $ \_ntcVersion -> runExceptT $ do
Expand Down Expand Up @@ -278,7 +277,8 @@ runQueryTip
-> Maybe OutputFile
-> ExceptT ShelleyQueryCmdError IO ()
runQueryTip (AnyConsensusModeParams cModeParams) network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath

case consensusModeOnly cModeParams of
CardanoMode -> do
Expand Down Expand Up @@ -370,10 +370,14 @@ runQueryUTxO
-> ExceptT ShelleyQueryCmdError IO ()
runQueryUTxO (AnyConsensusModeParams cModeParams)
qfilter network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo
anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

let cMode = consensusModeOnly cModeParams
sbe <- getSbe $ cardanoEraStyle era

Expand Down Expand Up @@ -402,10 +406,14 @@ runQueryKesPeriodInfo (AnyConsensusModeParams cModeParams) network nodeOpCertFil
opCert <- firstExceptT ShelleyQueryCmdOpCertCounterReadError
. newExceptT $ readFileTextEnvelope AsOperationalCertificate nodeOpCertFile

SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo
anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

let cMode = consensusModeOnly cModeParams
sbe <- getSbe $ cardanoEraStyle era
case cMode of
Expand Down Expand Up @@ -606,10 +614,15 @@ runQueryPoolState
-> [Hash StakePoolKey]
-> ExceptT ShelleyQueryCmdError IO ()
runQueryPoolState (AnyConsensusModeParams cModeParams) network poolIds = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo

anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

let cMode = consensusModeOnly cModeParams
sbe <- getSbe $ cardanoEraStyle era

Expand All @@ -630,10 +643,14 @@ runQueryStakeSnapshot
-> Hash StakePoolKey
-> ExceptT ShelleyQueryCmdError IO ()
runQueryStakeSnapshot (AnyConsensusModeParams cModeParams) network poolid = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo
anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

let cMode = consensusModeOnly cModeParams
sbe <- getSbe $ cardanoEraStyle era

Expand All @@ -652,10 +669,14 @@ runQueryLedgerState
-> ExceptT ShelleyQueryCmdError IO ()
runQueryLedgerState (AnyConsensusModeParams cModeParams)
network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo
anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

let cMode = consensusModeOnly cModeParams
sbe <- getSbe $ cardanoEraStyle era

Expand All @@ -680,10 +701,14 @@ runQueryProtocolState
-> ExceptT ShelleyQueryCmdError IO ()
runQueryProtocolState (AnyConsensusModeParams cModeParams)
network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo
anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

let cMode = consensusModeOnly cModeParams
sbe <- getSbe $ cardanoEraStyle era

Expand Down Expand Up @@ -715,10 +740,14 @@ runQueryStakeAddressInfo
-> ExceptT ShelleyQueryCmdError IO ()
runQueryStakeAddressInfo (AnyConsensusModeParams cModeParams)
(StakeAddress _ addr) network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo
anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

let cMode = consensusModeOnly cModeParams
sbe <- getSbe $ cardanoEraStyle era

Expand Down Expand Up @@ -983,7 +1012,8 @@ runQueryStakePools
-> ExceptT ShelleyQueryCmdError IO ()
runQueryStakePools (AnyConsensusModeParams cModeParams)
network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath

let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

Expand Down Expand Up @@ -1026,10 +1056,14 @@ runQueryStakeDistribution
-> ExceptT ShelleyQueryCmdError IO ()
runQueryStakeDistribution (AnyConsensusModeParams cModeParams)
network mOutFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo
anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

let cMode = consensusModeOnly cModeParams
sbe <- getSbe $ cardanoEraStyle era

Expand Down Expand Up @@ -1150,10 +1184,14 @@ runQueryLeadershipSchedule
runQueryLeadershipSchedule (AnyConsensusModeParams cModeParams) network
(GenesisFile genFile) coldVerKeyFile (SigningKeyFile vrfSkeyFp)
whichSchedule mJsonOutputFile = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr readEnvSocketPath
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr
$ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

anyE@(AnyCardanoEra era) <- determineEra cModeParams localNodeConnInfo
anyE@(AnyCardanoEra era) <-
firstExceptT ShelleyQueryCmdAcquireFailure
. newExceptT $ determineEra cModeParams localNodeConnInfo

sbe <- getSbe $ cardanoEraStyle era
let cMode = consensusModeOnly cModeParams

Expand Down Expand Up @@ -1289,21 +1327,6 @@ calcEraInMode era mode=
hoistMaybe (ShelleyQueryCmdEraConsensusModeMismatch (AnyConsensusMode mode) (anyCardanoEra era))
$ toEraInMode era mode

determineEra
:: ConsensusModeParams mode
-> LocalNodeConnectInfo mode
-> ExceptT ShelleyQueryCmdError IO AnyCardanoEra
determineEra cModeParams localNodeConnInfo =
case consensusModeOnly cModeParams of
ByronMode -> return $ AnyCardanoEra ByronEra
ShelleyMode -> return $ AnyCardanoEra ShelleyEra
CardanoMode -> do
eraQ <- liftIO . queryNodeLocalState localNodeConnInfo Nothing
$ QueryCurrentEra CardanoModeIsMultiEra
case eraQ of
Left acqFail -> left $ ShelleyQueryCmdAcquireFailure acqFail
Right anyCarEra -> return anyCarEra

executeQuery
:: forall result era mode. CardanoEra era
-> ConsensusModeParams mode
Expand All @@ -1316,15 +1339,15 @@ executeQuery era cModeP localNodeConnInfo q = do
ByronEraInByronMode -> left ShelleyQueryCmdByronEra
_ -> liftIO execQuery >>= queryResult
where
execQuery :: IO (Either AcquireFailure (Either EraMismatch result))
execQuery :: IO (Either AcquiringFailure (Either EraMismatch result))
execQuery = queryNodeLocalState localNodeConnInfo Nothing q

getSbe :: Monad m => CardanoEraStyle era -> ExceptT ShelleyQueryCmdError m (Api.ShelleyBasedEra era)
getSbe LegacyByronEra = left ShelleyQueryCmdByronEra
getSbe (Api.ShelleyBasedEra sbe) = return sbe

queryResult
:: Either AcquireFailure (Either EraMismatch a)
:: Either AcquiringFailure (Either EraMismatch a)
-> ExceptT ShelleyQueryCmdError IO a
queryResult eAcq =
case eAcq of
Expand Down

0 comments on commit 4c59112

Please sign in to comment.