feat(client,simapp): inject keyring in autocli opts (#17351)
This commit is contained in:
@@ -93,7 +93,12 @@ func NewRootCmd() *cobra.Command {
|
||||
|
||||
initRootCmd(rootCmd, encodingConfig.TxConfig, encodingConfig.InterfaceRegistry, encodingConfig.Codec, tempApp.BasicModuleManager)
|
||||
|
||||
if err := tempApp.AutoCliOpts().EnhanceRootCommand(rootCmd); err != nil {
|
||||
// add keyring to autocli opts
|
||||
autoCliOpts := tempApp.AutoCliOpts()
|
||||
initClientCtx, _ = config.ReadFromClientConfig(initClientCtx)
|
||||
autoCliOpts.Keyring = initClientCtx.Keyring
|
||||
|
||||
if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
|
||||
+33
-11
@@ -8,6 +8,8 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"cosmossdk.io/client/v2/autocli"
|
||||
clientv2keyring "cosmossdk.io/client/v2/autocli/keyring"
|
||||
"cosmossdk.io/core/address"
|
||||
"cosmossdk.io/depinject"
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/simapp"
|
||||
@@ -31,9 +33,9 @@ func NewRootCmd() *cobra.Command {
|
||||
interfaceRegistry codectypes.InterfaceRegistry
|
||||
appCodec codec.Codec
|
||||
txConfig client.TxConfig
|
||||
legacyAmino *codec.LegacyAmino
|
||||
autoCliOpts autocli.AppOptions
|
||||
moduleBasicManager module.BasicManager
|
||||
initClientCtx client.Context
|
||||
)
|
||||
|
||||
if err := depinject.Inject(
|
||||
@@ -42,26 +44,21 @@ func NewRootCmd() *cobra.Command {
|
||||
log.NewNopLogger(),
|
||||
simtestutil.NewAppOptionsWithFlagHome(tempDir()),
|
||||
),
|
||||
depinject.Provide(
|
||||
ProvideClientContext,
|
||||
ProvideKeyring,
|
||||
),
|
||||
),
|
||||
&interfaceRegistry,
|
||||
&appCodec,
|
||||
&txConfig,
|
||||
&legacyAmino,
|
||||
&autoCliOpts,
|
||||
&moduleBasicManager,
|
||||
&initClientCtx,
|
||||
); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
initClientCtx := client.Context{}.
|
||||
WithCodec(appCodec).
|
||||
WithInterfaceRegistry(interfaceRegistry).
|
||||
WithLegacyAmino(legacyAmino).
|
||||
WithInput(os.Stdin).
|
||||
WithAccountRetriever(types.AccountRetriever{}).
|
||||
WithHomeDir(simapp.DefaultNodeHome).
|
||||
WithViper("") // In simapp, we don't use any prefix for env variables.
|
||||
|
||||
rootCmd := &cobra.Command{
|
||||
Use: "simd",
|
||||
Short: "simulation app",
|
||||
@@ -116,3 +113,28 @@ func NewRootCmd() *cobra.Command {
|
||||
|
||||
return rootCmd
|
||||
}
|
||||
|
||||
func ProvideClientContext(appCodec codec.Codec, interfaceRegistry codectypes.InterfaceRegistry, legacyAmino *codec.LegacyAmino) client.Context {
|
||||
initClientCtx := client.Context{}.
|
||||
WithCodec(appCodec).
|
||||
WithInterfaceRegistry(interfaceRegistry).
|
||||
WithLegacyAmino(legacyAmino).
|
||||
WithInput(os.Stdin).
|
||||
WithAccountRetriever(types.AccountRetriever{}).
|
||||
WithHomeDir(simapp.DefaultNodeHome).
|
||||
WithViper("") // In simapp, we don't use any prefix for env variables.
|
||||
|
||||
// Read the config again to overwrite the default values with the values from the config file
|
||||
initClientCtx, _ = config.ReadFromClientConfig(initClientCtx)
|
||||
|
||||
return initClientCtx
|
||||
}
|
||||
|
||||
func ProvideKeyring(clientCtx client.Context, addressCodec address.Codec) (clientv2keyring.Keyring, error) {
|
||||
kb, err := client.NewKeyringFromBackend(clientCtx, clientCtx.Keyring.Backend())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return kb, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user