feat(client,simapp): inject keyring in autocli opts (#17351)

This commit is contained in:
Julien Robert
2023-08-14 14:08:04 +00:00
committed by GitHub
parent e60c583d28
commit bf92632a0e
26 changed files with 295 additions and 211 deletions
+6 -1
View File
@@ -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
View File
@@ -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
}