fix(client/v2): add fallbacks when incorrect protos (#24449)
This commit is contained in:
parent
6a1ec1bfc0
commit
73bedad9ad
@ -62,10 +62,18 @@ type AppOptions struct {
|
||||
// rootCmd := initRootCmd()
|
||||
// err = autoCliOpts.EnhanceRootCommand(rootCmd)
|
||||
func (appOptions AppOptions) EnhanceRootCommand(rootCmd *cobra.Command) error {
|
||||
mergedFiles, err := proto.MergedRegistry()
|
||||
var (
|
||||
mergedFiles flag.FileResolver
|
||||
err error
|
||||
)
|
||||
|
||||
mergedFiles, err = proto.MergedRegistry()
|
||||
if err != nil {
|
||||
return err
|
||||
// we can safely ignore this error, as this should have been called somewhere earlier
|
||||
// in the app's lifecycle.
|
||||
mergedFiles = appOptions.ClientCtx.InterfaceRegistry
|
||||
}
|
||||
|
||||
builder := &Builder{
|
||||
Builder: flag.Builder{
|
||||
TypeResolver: protoregistry.GlobalTypes,
|
||||
|
||||
@ -32,17 +32,21 @@ const (
|
||||
DecScalarType = "cosmos.Dec"
|
||||
)
|
||||
|
||||
// FileResolver specifies how protobuf file descriptors will be resolved.
|
||||
type FileResolver interface {
|
||||
protodesc.Resolver
|
||||
RangeFiles(func(protoreflect.FileDescriptor) bool)
|
||||
}
|
||||
|
||||
// Builder manages options for building pflag flags for protobuf messages.
|
||||
type Builder struct {
|
||||
// TypeResolver specifies how protobuf types will be resolved. If it is
|
||||
// nil protoregistry.GlobalTypes will be used.
|
||||
// TypeResolver specifies how protobuf types will be resolved.
|
||||
TypeResolver interface {
|
||||
protoregistry.MessageTypeResolver
|
||||
protoregistry.ExtensionTypeResolver
|
||||
}
|
||||
|
||||
// FileResolver specifies how protobuf file descriptors will be resolved. If it is
|
||||
// nil protoregistry.GlobalFiles will be used.
|
||||
// FileResolver specifies how protobuf file descriptors will be resolved.
|
||||
FileResolver interface {
|
||||
protodesc.Resolver
|
||||
RangeFiles(func(protoreflect.FileDescriptor) bool)
|
||||
@ -300,7 +304,7 @@ func (b *Builder) addFlattenFieldBindingToArgs(ctx *context.Context, path string
|
||||
func (b *Builder) addFieldBindingToArgs(ctx *context.Context, messageBinder *MessageBinder, name protoreflect.Name, fields protoreflect.FieldDescriptors) (fieldBinding, error) {
|
||||
field := fields.ByName(name)
|
||||
if field == nil {
|
||||
return fieldBinding{}, fmt.Errorf("can't find field %s", name) // TODO: it will improve error if msg.FullName() was included.`
|
||||
return fieldBinding{}, fmt.Errorf("can't find field %s in %s", name, messageBinder.messageType.Descriptor().FullName())
|
||||
}
|
||||
|
||||
_, hasValue, err := b.addFieldFlag(
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
package crisis
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
autocliv1 "cosmossdk.io/api/cosmos/autocli/v1"
|
||||
crisisv1beta1 "cosmossdk.io/api/cosmos/crisis/v1beta1"
|
||||
"github.com/cosmos/cosmos-sdk/version"
|
||||
)
|
||||
|
||||
// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface.
|
||||
@ -24,12 +21,8 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {
|
||||
},
|
||||
},
|
||||
{
|
||||
RpcMethod: "UpdateParams",
|
||||
Use: "update-params-proposal [params]",
|
||||
Short: "Submit a proposal to update crisis module params. Note: the entire params must be provided.",
|
||||
Example: fmt.Sprintf(`%s tx crisis update-params-proposal '{ "constant_fee": {"denom": "stake", "amount": "1000"} }'`, version.AppName),
|
||||
PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "params"}},
|
||||
GovProposal: true,
|
||||
RpcMethod: "UpdateParams",
|
||||
Skip: true, // Crisis is deprecated.
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@ -131,7 +131,7 @@ func AddGovPropFlagsToCmd(cmd *cobra.Command) {
|
||||
cmd.Flags().String(FlagMetadata, "", "The metadata to include with the governance proposal")
|
||||
cmd.Flags().String(FlagTitle, "", "The title to put on the governance proposal")
|
||||
cmd.Flags().String(FlagSummary, "", "The summary to include with the governance proposal")
|
||||
cmd.Flags().Bool(FlagExpedited, false, "Whether to expedite the governance proposal")
|
||||
// cmd.Flags().Bool(FlagExpedited, false, "Whether to expedite the governance proposal") // cannot be enabled because of IBC redefining this flag in `upgrade-channels` command.
|
||||
}
|
||||
|
||||
// ReadGovPropCmdFlags parses a MsgSubmitProposal from the provided context and flags.
|
||||
@ -167,10 +167,10 @@ func ReadGovPropCmdFlags(proposer string, flagSet *pflag.FlagSet) (*govv1.MsgSub
|
||||
return nil, fmt.Errorf("could not read summary: %w", err)
|
||||
}
|
||||
|
||||
rv.Expedited, err = flagSet.GetBool(FlagExpedited)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not read expedited: %w", err)
|
||||
}
|
||||
// rv.Expedited, err = flagSet.GetBool(FlagExpedited)
|
||||
// if err != nil {
|
||||
// return nil, fmt.Errorf("could not read expedited: %w", err)
|
||||
// }
|
||||
|
||||
rv.Proposer = proposer
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user