Commit cd159505 authored by linj's avatar linj Committed by linj

impl cli

parent fdd374ff
package commands
import (
"encoding/hex"
"encoding/json"
"fmt"
"github.com/spf13/cobra"
"gitlab.33.cn/chain33/chain33/rpc/jsonclient"
"os"
"strings"
pty "gitlab.33.cn/chain33/chain33/plugin/dapp/unfreeze/types"
"gitlab.33.cn/chain33/chain33/types"
)
func Cmd() *cobra.Command {
......@@ -15,6 +23,7 @@ func Cmd() *cobra.Command {
cmd.AddCommand(withdrawCmd())
cmd.AddCommand(terminateCmd())
cmd.AddCommand(showCmd())
cmd.AddCommand(queryWithdrawCmd())
return cmd
}
......@@ -48,6 +57,24 @@ func createFlag(cmd *cobra.Command) *cobra.Command {
return cmd
}
func getCreateFlags(cmd *cobra.Command) *pty.UnfreezeCreate {
beneficiary, _ := cmd.Flags().GetString("beneficiary")
exec, _ := cmd.Flags().GetString("asset_exec")
symbol, _ := cmd.Flags().GetString("asset_symbol")
total, _ := cmd.Flags().GetInt64("total")
startTs, _ := cmd.Flags().GetInt64("start_ts")
unfreeze := &pty.UnfreezeCreate{
StartTime: startTs,
AssetExec: exec,
AssetSymbol: symbol,
TotalCount: total,
Beneficiary: beneficiary,
Means: "",
}
return unfreeze
}
func fixAmountCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "fix_amount",
......@@ -64,8 +91,24 @@ func fixAmountCmd() *cobra.Command {
}
func fixAmount(cmd *cobra.Command, args []string) {
beneficiary, _ := cmd.Flags().GetString("beneficiary")
fmt.Printf("%s\n", beneficiary)
create := getCreateFlags(cmd)
amount, _ := cmd.Flags().GetInt64("amount")
period, _ := cmd.Flags().GetInt64("period")
create.Means = pty.FixAmountX
create.MeansOpt = &pty.UnfreezeCreate_FixAmount{FixAmount: &pty.FixAmount{Period: period, Amount: amount}}
tx, err := pty.UnfreezeType{}.RPC_UnfreezeCreateTx(create)
if err != nil {
fmt.Printf("Create Tx frailed: %s", err)
return
}
outputTx(tx)
}
func outputTx(tx *types.Transaction) {
txHex := types.Encode(tx)
fmt.Println(hex.EncodeToString(txHex))
}
func leftCmd() *cobra.Command {
......@@ -84,8 +127,20 @@ func leftCmd() *cobra.Command {
}
func left(cmd *cobra.Command, args []string) {
beneficiary, _ := cmd.Flags().GetString("beneficiary")
fmt.Printf("%s\n", beneficiary)
create := getCreateFlags(cmd)
tenThousandth, _ := cmd.Flags().GetInt64("ten_thousandth")
period, _ := cmd.Flags().GetInt64("period")
create.Means = pty.FixAmountX
create.MeansOpt = &pty.UnfreezeCreate_LeftProportion{
LeftProportion: &pty.LeftProportion{Period: period, TenThousandth: tenThousandth}}
tx, err := pty.UnfreezeType{}.RPC_UnfreezeCreateTx(create)
if err != nil {
fmt.Printf("Create Tx frailed: %s", err)
return
}
outputTx(tx)
}
func withdrawCmd() *cobra.Command {
......@@ -100,7 +155,6 @@ func withdrawCmd() *cobra.Command {
return cmd
}
func terminateCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "terminate",
......@@ -137,18 +191,89 @@ func queryWithdrawCmd() *cobra.Command {
return cmd
}
func queryWithdraw(cmd *cobra.Command, args []string) {
func withdraw(cmd *cobra.Command, args []string) {
id, _ := cmd.Flags().GetString("id")
tx, err := pty.UnfreezeType{}.RPC_UnfreezeWithdrawTx(&pty.UnfreezeWithdraw{UnfreezeID: id})
if err != nil {
fmt.Printf("Create Tx frailed: %s", err)
return
}
outputTx(tx)
}
func terminate(cmd *cobra.Command, args []string) {
id, _ := cmd.Flags().GetString("id")
tx, err := pty.UnfreezeType{}.RPC_UnfreezeTerminateTx(&pty.UnfreezeTerminate{UnfreezeID: id})
if err != nil {
fmt.Printf("Create Tx frailed: %s", err)
return
}
outputTx(tx)
}
func show(cmd *cobra.Command, args []string) {
func queryWithdraw(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id")
cli, err := jsonclient.NewJSONClient(rpcLaddr)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
param := &types.Query4Cli{
Execer: getRealExecName(paraName, pty.UnfreezeX),
FuncName: "QueryWithdraw",
Payload: types.ReqString{Data: id},
}
var resp pty.ReplyQueryUnfreezeWithdraw
err = cli.Call("Chain33.Query", param, &resp)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
data, err := json.MarshalIndent(resp, "", " ")
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(string(data))
}
func withdraw(cmd *cobra.Command, args []string) {
func show(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id")
cli, err := jsonclient.NewJSONClient(rpcLaddr)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
param := &types.Query4Cli{
Execer: getRealExecName(paraName, pty.UnfreezeX),
FuncName: "GetUnfreeze",
Payload: types.ReqString{Data: id},
}
var resp pty.Unfreeze
err = cli.Call("Chain33.Query", param, &resp)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
data, err := json.MarshalIndent(resp, "", " ")
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(string(data))
}
func terminate(cmd *cobra.Command, args []string) {
func getRealExecName(paraName string, name string) string {
if strings.HasPrefix(name, "user.p.") {
return name
}
return paraName + name
}
......@@ -12,16 +12,6 @@ const (
TyLogTerminateUnfreeze = 2003
)
//包的名字可以通过配置文件来配置
//建议用github的组织名称,或者用户名字开头, 再加上自己的插件的名字
//如果发生重名,可以通过配置文件修改这些名字
var (
PackageName = "chain33.unfreeze"
RpcName = "Chain33.Unfreeze"
UnfreezeX = "unfreeze"
ExecerUnfreeze = []byte(UnfreezeX)
)
const (
Action_CreateUnfreeze = "createUnfreeze"
Action_WithdrawUnfreeze = "withdrawUnfreeze"
......@@ -32,4 +22,16 @@ const (
FuncName_QueryUnfreezeWithdraw = "QueryUnfreezeWithdraw"
)
var SupportMeans = []string{"FixAmount", "LeftProportion"}
//包的名字可以通过配置文件来配置
//建议用github的组织名称,或者用户名字开头, 再加上自己的插件的名字
//如果发生重名,可以通过配置文件修改这些名字
var (
PackageName = "chain33.unfreeze"
RpcName = "Chain33.Unfreeze"
UnfreezeX = "unfreeze"
ExecerUnfreeze = []byte(UnfreezeX)
FixAmountX = "FixAmount"
LeftProportionX = "LeftProportion"
SupportMeans = []string{"FixAmount", "LeftProportion"}
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment