Skip to content

Commit

Permalink
fix(cli): query default deposit values from onchain params (#1934)
Browse files Browse the repository at this point in the history
Signed-off-by: Artur Troian <[email protected]>
  • Loading branch information
troian authored Mar 13, 2024
1 parent 67b7942 commit 51c4d31
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 12 deletions.
88 changes: 81 additions & 7 deletions cmd/common/flags.go
Original file line number Diff line number Diff line change
@@ -1,23 +1,97 @@
package common

import (
sdk "github.com/cosmos/cosmos-sdk/types"
"context"
"encoding/json"
"errors"
"fmt"

"github.com/akash-network/akash-api/go/node/client/v1beta2"
"github.com/cosmos/cosmos-sdk/x/params/types/proposal"
"github.com/spf13/cobra"
"github.com/spf13/pflag"

sdk "github.com/cosmos/cosmos-sdk/types"
)

const (
FlagDeposit = "deposit"
)

func AddDepositFlags(flags *pflag.FlagSet, dflt sdk.Coin) {
flags.String("deposit", dflt.String(), "Deposit amount")
var (
ErrUnknownSubspace = errors.New("unknown subspace")
)

type paramCoin struct {
Denom string
Amount string
}

type paramCoins []paramCoin

func AddDepositFlags(flags *pflag.FlagSet) {
flags.String(FlagDeposit, "", "Deposit amount")
}

func DepositFromFlags(flags *pflag.FlagSet) (sdk.Coin, error) {
val, err := flags.GetString("deposit")
func DetectDeposit(ctx context.Context, flags *pflag.FlagSet, cl v1beta2.QueryClient, subspace, paramKey string) (sdk.Coin, error) {
var deposit sdk.Coin
var depositStr string
var err error

if !flags.Changed(FlagDeposit) {
res, err := cl.Params().Params(ctx, &proposal.QueryParamsRequest{
Subspace: subspace,
Key: paramKey,
})
if err != nil {
return sdk.Coin{}, err
}

switch subspace {
case "market":
var coin paramCoin

if err = json.Unmarshal([]byte(res.Param.Value), &coin); err != nil {
return sdk.Coin{}, err
}

depositStr = fmt.Sprintf("%s%s", coin.Amount, coin.Denom)
case "deployment":
var coins paramCoins

if err = json.Unmarshal([]byte(res.Param.Value), &coins); err != nil {
return sdk.Coin{}, err
}

// always default to AKT
for _, sCoin := range coins {
if sCoin.Denom == "uakt" {
depositStr = fmt.Sprintf("%s%s", sCoin.Amount, sCoin.Denom)
break
}
}
default:
return sdk.Coin{}, ErrUnknownSubspace
}

if depositStr == "" {
return sdk.Coin{}, fmt.Errorf("couldn't query default deposit amount for uAKT")
}
} else {
depositStr, err = flags.GetString(FlagDeposit)
if err != nil {
return sdk.Coin{}, err
}
}

deposit, err = sdk.ParseCoinNormalized(depositStr)
if err != nil {
return sdk.Coin{}, err
}
return sdk.ParseCoinNormalized(val)

return deposit, nil
}

func MarkReqDepositFlags(cmd *cobra.Command) {
_ = cmd.MarkFlagRequired("deposit")
_ = cmd.MarkFlagRequired(FlagDeposit)
}
5 changes: 2 additions & 3 deletions x/deployment/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (

cltypes "github.com/akash-network/akash-api/go/node/client/types"
"github.com/spf13/cobra"

tmrpc "github.com/tendermint/tendermint/rpc/core/types"

sdkclient "github.com/cosmos/cosmos-sdk/client"
Expand Down Expand Up @@ -120,7 +119,7 @@ func cmdCreate(key string) *cobra.Command {
return err
}

deposit, err := common.DepositFromFlags(cmd.Flags())
deposit, err := common.DetectDeposit(ctx, cmd.Flags(), cl.Query(), "deployment", "MinDeposits")
if err != nil {
return err
}
Expand Down Expand Up @@ -157,8 +156,8 @@ func cmdCreate(key string) *cobra.Command {

flags.AddTxFlagsToCmd(cmd)
AddDeploymentIDFlags(cmd.Flags())
common.AddDepositFlags(cmd.Flags(), DefaultDeposit)
AddDepositorFlag(cmd.Flags())
common.AddDepositFlags(cmd.Flags())

return cmd
}
Expand Down
4 changes: 2 additions & 2 deletions x/market/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func cmdBidCreate(key string) *cobra.Command {
return err
}

deposit, err := common.DepositFromFlags(cmd.Flags())
deposit, err := common.DetectDeposit(ctx, cmd.Flags(), cl.Query(), "market", "BidMinDeposit")
if err != nil {
return err
}
Expand Down Expand Up @@ -111,7 +111,7 @@ func cmdBidCreate(key string) *cobra.Command {
flags.AddTxFlagsToCmd(cmd)
AddOrderIDFlags(cmd.Flags())
cmd.Flags().String("price", "", "Bid Price")
common.AddDepositFlags(cmd.Flags(), DefaultDeposit)
common.AddDepositFlags(cmd.Flags())

return cmd
}
Expand Down

0 comments on commit 51c4d31

Please sign in to comment.