diff --git a/CHANGELOG.md b/CHANGELOG.md index 15a4cf2b0f..511faab169 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] +### Features + +* (client) [#21074](https://github.com/cosmos/cosmos-sdk/pull/21074) Add auto cli for node service + ### Bug Fixes * (query) [87d3a43](https://github.com/cosmos/cosmos-sdk/commit/87d3a432af95f4cf96aa02351ed5fcc51cca6e7b) Fix collection filtered pagination. diff --git a/client/grpc/node/autocli.go b/client/grpc/node/autocli.go new file mode 100644 index 0000000000..87819e0f03 --- /dev/null +++ b/client/grpc/node/autocli.go @@ -0,0 +1,43 @@ +package node + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + nodev1beta1 "cosmossdk.io/api/cosmos/base/node/v1beta1" +) + +var ServiceAutoCLIDescriptor = &autocliv1.ServiceCommandDescriptor{ + Service: nodev1beta1.Service_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Config", + Use: "config", + Short: "Query the current node config", + }, + { + RpcMethod: "Status", + Use: "status", + Short: "Query the current node status", + }, + }, +} + +// NewNodeCommands is a fake `appmodule.Module` to be considered as a module +// and be added in AutoCLI. +func NewNodeCommands() *nodeModule { + return &nodeModule{} +} + +type nodeModule struct{} + +func (m nodeModule) IsOnePerModuleType() {} +func (m nodeModule) IsAppModule() {} + +func (m nodeModule) Name() string { + return "node" +} + +func (m nodeModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: ServiceAutoCLIDescriptor, + } +} diff --git a/simapp/simd/cmd/root.go b/simapp/simd/cmd/root.go index 19d197f956..e14298dc12 100644 --- a/simapp/simd/cmd/root.go +++ b/simapp/simd/cmd/root.go @@ -13,6 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" + nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" "github.com/cosmos/cosmos-sdk/server" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/cosmos/cosmos-sdk/types/tx/signing" @@ -25,7 +26,6 @@ import ( // main function. func NewRootCmd() *cobra.Command { // we "pre"-instantiate the application for getting the injected/configured encoding configuration - // note, this is not necessary when using app wiring, as depinject can be directly used (see root_v2.go) tempApp := simapp.NewSimApp(log.NewNopLogger(), dbm.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(simapp.DefaultNodeHome)) encodingConfig := params.EncodingConfig{ InterfaceRegistry: tempApp.InterfaceRegistry(), @@ -101,6 +101,9 @@ func NewRootCmd() *cobra.Command { autoCliOpts := tempApp.AutoCliOpts() autoCliOpts.ClientCtx = initClientCtx + nodeCmds := nodeservice.NewNodeCommands() + autoCliOpts.ModuleOptions[nodeCmds.Name()] = nodeCmds.AutoCLIOptions() + if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { panic(err) } diff --git a/simapp/simd/cmd/root_di.go b/simapp/simd/cmd/root_di.go index 4fe8c4d3ce..10a5438ebf 100644 --- a/simapp/simd/cmd/root_di.go +++ b/simapp/simd/cmd/root_di.go @@ -7,6 +7,7 @@ import ( "github.com/spf13/cobra" + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" "cosmossdk.io/client/v2/autocli" "cosmossdk.io/depinject" "cosmossdk.io/log" @@ -14,6 +15,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" + nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/server" @@ -80,6 +82,10 @@ func NewRootCmd() *cobra.Command { initRootCmd(rootCmd, clientCtx.TxConfig, moduleBasicManager) + nodeCmds := nodeservice.NewNodeCommands() + autoCliOpts.ModuleOptions = make(map[string]*autocliv1.ModuleOptions) + autoCliOpts.ModuleOptions[nodeCmds.Name()] = nodeCmds.AutoCLIOptions() + if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { panic(err) }