From 5a5826cc1cb0aa2753d68db85a2e49aea0923a88 Mon Sep 17 00:00:00 2001 From: vuong <56973102+vuong177@users.noreply.github.com> Date: Tue, 31 Jan 2023 11:24:55 +0700 Subject: [PATCH] override QueryFnName (#4132) * override QueryFnName * duplicate prepareDescriptor * add CustomFlagOverrides && make change for poolmanager cli (cherry picked from commit e15fc6b1f2694537f5740716a0c34bb55e9488e4) # Conflicts: # x/poolmanager/client/cli/query.go --- osmoutils/osmocli/query_cmd_wrap.go | 1 - x/gamm/client/cli/query.go | 16 +++-- x/poolmanager/client/cli/query.go | 103 ++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 x/poolmanager/client/cli/query.go diff --git a/osmoutils/osmocli/query_cmd_wrap.go b/osmoutils/osmocli/query_cmd_wrap.go index 790fd2ad5c1..ca893c86e2f 100644 --- a/osmoutils/osmocli/query_cmd_wrap.go +++ b/osmoutils/osmocli/query_cmd_wrap.go @@ -48,7 +48,6 @@ func QueryIndexCmd(moduleName string) *cobra.Command { func AddQueryCmd[Q proto.Message, querier any](cmd *cobra.Command, newQueryClientFn func(grpc1.ClientConn) querier, f func() (*QueryDescriptor, Q)) { desc, _ := f() - prepareDescriptor[Q](desc) subCmd := BuildQueryCli[Q](desc, newQueryClientFn) cmd.AddCommand(subCmd) } diff --git a/x/gamm/client/cli/query.go b/x/gamm/client/cli/query.go index ed307a7992c..f2df5b8c691 100644 --- a/x/gamm/client/cli/query.go +++ b/x/gamm/client/cli/query.go @@ -41,6 +41,10 @@ func GetQueryCmd() *cobra.Command { return cmd } +var customRouterFlagOverride = map[string]string{ + "router": FlagSwapRouteDenoms, +} + func GetCmdPool() (*osmocli.QueryDescriptor, *types.QueryPoolRequest) { return &osmocli.QueryDescriptor{ Use: "pool [poolID]", @@ -201,8 +205,10 @@ func GetCmdEstimateSwapExactAmountIn() (*osmocli.QueryDescriptor, *types.QuerySw Short: "Query estimate-swap-exact-amount-in", Long: `Query estimate-swap-exact-amount-in.{{.ExampleHeader}} {{.CommandPrefix}} estimate-swap-exact-amount-in 1 osm11vmx8jtggpd9u7qr0t8vxclycz85u925sazglr7 stake --swap-route-pool-ids=2 --swap-route-pool-ids=3`, - ParseQuery: EstimateSwapExactAmountInParseArgs, - Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}}, + ParseQuery: EstimateSwapExactAmountInParseArgs, + Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}}, + QueryFnName: "EstimateSwapExactAmountIn", + CustomFlagOverrides: customRouterFlagOverride, }, &types.QuerySwapExactAmountInRequest{} } @@ -213,8 +219,10 @@ func GetCmdEstimateSwapExactAmountOut() (*osmocli.QueryDescriptor, *types.QueryS Short: "Query estimate-swap-exact-amount-out", Long: `Query estimate-swap-exact-amount-out.{{.ExampleHeader}} {{.CommandPrefix}} estimate-swap-exact-amount-out 1 osm11vmx8jtggpd9u7qr0t8vxclycz85u925sazglr7 stake --swap-route-pool-ids=2 --swap-route-pool-ids=3`, - ParseQuery: EstimateSwapExactAmountOutParseArgs, - Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}}, + ParseQuery: EstimateSwapExactAmountOutParseArgs, + Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}}, + QueryFnName: "EstimateSwapExactAmountOut", + CustomFlagOverrides: customRouterFlagOverride, }, &types.QuerySwapExactAmountOutRequest{} } diff --git a/x/poolmanager/client/cli/query.go b/x/poolmanager/client/cli/query.go new file mode 100644 index 00000000000..6472b206fe7 --- /dev/null +++ b/x/poolmanager/client/cli/query.go @@ -0,0 +1,103 @@ +package cli + +import ( + "strconv" + + "github.com/gogo/protobuf/proto" + "github.com/spf13/cobra" + flag "github.com/spf13/pflag" + + "github.com/osmosis-labs/osmosis/osmoutils/osmocli" + "github.com/osmosis-labs/osmosis/v14/x/poolmanager/client/queryproto" + "github.com/osmosis-labs/osmosis/v14/x/poolmanager/types" +) + +var customRouterFlagOverride = map[string]string{ + "router": FlagSwapRouteDenoms, +} + +// GetQueryCmd returns the cli query commands for this module. +func GetQueryCmd() *cobra.Command { + cmd := osmocli.QueryIndexCmd(types.ModuleName) + + osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdNumPools) + osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdEstimateSwapExactAmountIn) + osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdEstimateSwapExactAmountOut) + + return cmd +} + +// GetCmdEstimateSwapExactAmountIn returns estimation of output coin when amount of x token input. +func GetCmdEstimateSwapExactAmountIn() (*osmocli.QueryDescriptor, *queryproto.EstimateSwapExactAmountInRequest) { + return &osmocli.QueryDescriptor{ + Use: "estimate-swap-exact-amount-in ", + Short: "Query estimate-swap-exact-amount-in", + Long: `Query estimate-swap-exact-amount-in.{{.ExampleHeader}} +{{.CommandPrefix}} estimate-swap-exact-amount-in 1 osm11vmx8jtggpd9u7qr0t8vxclycz85u925sazglr7 stake --swap-route-pool-ids=2 --swap-route-pool-ids=3`, + ParseQuery: EstimateSwapExactAmountInParseArgs, + Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}}, + QueryFnName: "EstimateSwapExactAmountIn", + CustomFlagOverrides: customRouterFlagOverride, + }, &queryproto.EstimateSwapExactAmountInRequest{} +} + +// GetCmdEstimateSwapExactAmountOut returns estimation of input coin to get exact amount of x token output. +func GetCmdEstimateSwapExactAmountOut() (*osmocli.QueryDescriptor, *queryproto.EstimateSwapExactAmountOutRequest) { + return &osmocli.QueryDescriptor{ + Use: "estimate-swap-exact-amount-out ", + Short: "Query estimate-swap-exact-amount-out", + Long: `Query estimate-swap-exact-amount-out.{{.ExampleHeader}} +{{.CommandPrefix}} estimate-swap-exact-amount-out 1 osm11vmx8jtggpd9u7qr0t8vxclycz85u925sazglr7 stake --swap-route-pool-ids=2 --swap-route-pool-ids=3`, + ParseQuery: EstimateSwapExactAmountOutParseArgs, + Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}}, + QueryFnName: "EstimateSwapExactAmountOut", + CustomFlagOverrides: customRouterFlagOverride, + }, &queryproto.EstimateSwapExactAmountOutRequest{} +} + +// GetCmdNumPools return number of pools available. +func GetCmdNumPools() (*osmocli.QueryDescriptor, *queryproto.NumPoolsRequest) { + return &osmocli.QueryDescriptor{ + Use: "num-pools", + Short: "Query number of pools", + Long: "{{.Short}}", + }, &queryproto.NumPoolsRequest{} +} + +func EstimateSwapExactAmountInParseArgs(args []string, fs *flag.FlagSet) (proto.Message, error) { + poolID, err := strconv.Atoi(args[0]) + if err != nil { + return nil, err + } + + routes, err := swapAmountInRoutes(fs) + if err != nil { + return nil, err + } + + return &queryproto.EstimateSwapExactAmountInRequest{ + Sender: args[1], // TODO: where sender is used? + PoolId: uint64(poolID), // TODO: is this poolId used? + TokenIn: args[2], + Routes: routes, + }, nil +} + +func EstimateSwapExactAmountOutParseArgs(args []string, fs *flag.FlagSet) (proto.Message, error) { + poolID, err := strconv.Atoi(args[0]) + if err != nil { + return nil, err + } + + routes, err := swapAmountOutRoutes(fs) + if err != nil { + return nil, err + } + + return &queryproto.EstimateSwapExactAmountOutRequest{ + Sender: args[1], // TODO: where sender is used? + PoolId: uint64(poolID), // TODO: is this poolId used? + Routes: routes, + TokenOut: args[2], + }, nil +}