Skip to content

Commit

Permalink
feat(cmd/paratime/denom): Add cmd denom set and set-native
Browse files Browse the repository at this point in the history
  • Loading branch information
amela committed May 27, 2024
1 parent 06baa71 commit dd111d3
Show file tree
Hide file tree
Showing 9 changed files with 158 additions and 0 deletions.
16 changes: 16 additions & 0 deletions cmd/paratime/denomination/denomination.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package denomination

import (
"github.com/spf13/cobra"
)

var Cmd = &cobra.Command{
Use: "denomination",
Short: "Denomination operations",
Aliases: []string{"denom"},
}

func init() {
Cmd.AddCommand(setDenomCmd)
Cmd.AddCommand(setNativeDenomCmd)
}
49 changes: 49 additions & 0 deletions cmd/paratime/denomination/set-native.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package denomination

import (
"fmt"
"strconv"

"github.com/spf13/cobra"

"github.com/oasisprotocol/oasis-sdk/client-sdk/go/config"

cliConfig "github.com/oasisprotocol/cli/config"
)

var setNativeDenomCmd = &cobra.Command{
Use: "set-native <network> <paratime> <denomination> <number_of_decimals>",
Short: "Set native denomination",
Args: cobra.ExactArgs(4),
Run: func(cmd *cobra.Command, args []string) {
cfg := cliConfig.Global()
networkArg, ptArg, symbolArg, decimalsArg := args[0], args[1], args[2], args[3]

decimalsInt, err := strconv.Atoi(decimalsArg)
if err != nil {
cobra.CheckErr(fmt.Errorf("number of decimals '%s' can not be converted to integer", decimalsArg))
return
}

net := cfg.Networks.All[networkArg]
if net == nil {
cobra.CheckErr(fmt.Errorf("network '%s' does not exist", networkArg))
return
}

pt := net.ParaTimes.All[ptArg]
if pt == nil {
cobra.CheckErr(fmt.Errorf("pratime '%s' does not exist", ptArg))
return
}

denomInfo := &config.DenominationInfo{
Symbol: symbolArg,
Decimals: uint8(decimalsInt),
}
pt.Denominations["_"] = denomInfo

err = cfg.Save()
cobra.CheckErr(err)
},
}
69 changes: 69 additions & 0 deletions cmd/paratime/denomination/set.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package denomination

import (
"fmt"
"strconv"

"github.com/spf13/cobra"
flag "github.com/spf13/pflag"

"github.com/oasisprotocol/oasis-sdk/client-sdk/go/config"

cliConfig "github.com/oasisprotocol/cli/config"
)

var (
symbol string

setDenomCmd = &cobra.Command{
Use: "set <network> <paratime> <denomination> <number_of_decimals>",
Short: "Set denomination",
Args: cobra.ExactArgs(4),
Run: func(cmd *cobra.Command, args []string) {
cfg := cliConfig.Global()
networkArg, ptArg, denomArg, decimalsArg := args[0], args[1], args[2], args[3]

if symbol == "" {
symbol = denomArg
}

if symbol == config.NativeDenominationKey {
cobra.CheckErr(fmt.Errorf("use denom set-native cmd for setting paratime's native denomination"))
return
}

decimalsInt, err := strconv.Atoi(decimalsArg)
if err != nil {
cobra.CheckErr(fmt.Errorf("number of decimals '%s' can not be converted to integer", decimalsArg))
return
}

net := cfg.Networks.All[networkArg]
if net == nil {
cobra.CheckErr(fmt.Errorf("network '%s' does not exist", networkArg))
return
}

pt := net.ParaTimes.All[ptArg]
if pt == nil {
cobra.CheckErr(fmt.Errorf("pratime '%s' does not exist", ptArg))
return
}

denomInfo := &config.DenominationInfo{
Symbol: symbol,
Decimals: uint8(decimalsInt),
}
pt.Denominations[denomArg] = denomInfo

err = cfg.Save()
cobra.CheckErr(err)
},
}
)

func init() {
symbolFlag := flag.NewFlagSet("", flag.ContinueOnError)
symbolFlag.StringVar(&symbol, "symbol", "", "Denomination symbol")
setDenomCmd.Flags().AddFlagSet(symbolFlag)
}
3 changes: 3 additions & 0 deletions cmd/paratime/paratime.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package paratime

import (
"github.com/spf13/cobra"

"github.com/oasisprotocol/cli/cmd/paratime/denomination"
)

var Cmd = &cobra.Command{
Expand All @@ -18,4 +20,5 @@ func init() {
Cmd.AddCommand(setDefaultCmd)
Cmd.AddCommand(showCmd)
Cmd.AddCommand(statsCmd)
Cmd.AddCommand(denomination.Cmd)
}
19 changes: 19 additions & 0 deletions docs/paratime.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,25 @@ encrypted:

![code](../examples/paratime-show/show-tx-encrypted.out.static)

## Set denominations {#denom-set}

To set denomination on the specific network and paratime use
`paratime denom set <network> <paratime> <denomination> <number_of_decimals>
--symbol <symbol>`. To use this cmd a denomination must already exist in the
actual runtime.

![code shell](../examples/paratime-denom/00-denom-set.in)

## Set denominations {#denom-set-native}

To set native denomination on the specific network and paratime use
`paratime denom set-native <network> <paratime> <denomination>
<number_of_decimals>`.

The native denomination is already mandatory in the paratime add command.

![code shell](../examples/paratime-denom/00-denom-set-native.in)

## Advanced

### Register a New ParaTime {#register}
Expand Down
1 change: 1 addition & 0 deletions examples/paratime-denom/00-denom-set.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
oasis paratime denom set mainnet sapphire TEST 16
Empty file.
1 change: 1 addition & 0 deletions examples/paratime-denom/01-denom-set-native.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
oasis paratime denom set-native testnet cipher TEST 9
Empty file.

0 comments on commit dd111d3

Please sign in to comment.