-
Notifications
You must be signed in to change notification settings - Fork 20
/
qcp.go
55 lines (47 loc) · 1.39 KB
/
qcp.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package client
import (
"github.com/QOSGroup/kepler/cert"
qcliacc "github.com/QOSGroup/qbase/client/account"
"github.com/QOSGroup/qbase/client/context"
qclitx "github.com/QOSGroup/qbase/client/tx"
"github.com/QOSGroup/qbase/txs"
qtxs "github.com/QOSGroup/qos/module/qcp/txs"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"github.com/tendermint/go-amino"
"github.com/tendermint/tendermint/libs/common"
)
const (
flagCreator = "creator"
flagQcpCrtFile = "qcp.crt"
)
func InitQCPCmd(cdc *amino.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "init-qcp",
Short: "init qcp",
RunE: func(cmd *cobra.Command, args []string) error {
return qclitx.BroadcastTxAndPrintResult(cdc, func(ctx context.CLIContext) (txs.ITx, error) {
crtFile := viper.GetString(flagQcpCrtFile)
creatorAddr, err := qcliacc.GetAddrFromFlag(ctx, flagCreator)
if err != nil {
return nil, err
}
var crt = cert.Certificate{}
err = cdc.UnmarshalJSON(common.MustReadFile(crtFile), &crt)
if err != nil {
return nil, err
}
tx := qtxs.TxInitQCP{creatorAddr, &crt}
if err = tx.ValidateInputs(); err != nil {
return nil, err
}
return tx, nil
})
},
}
cmd.Flags().String(flagCreator, "", "address or name of creator")
cmd.Flags().String(flagQcpCrtFile, "", "path of CA(QCP)")
cmd.MarkFlagRequired(flagCreator)
cmd.MarkFlagRequired(flagQcpCrtFile)
return cmd
}