Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Print the string associated with the message method #275

Merged
merged 1 commit into from
Nov 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion cli/address.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ var AddrCmds = &cli.Command{
searchAddrCmd,
listAddrCmd,
deleteAddrCmd,
// updateNonceCmd,
forbiddenAddrCmd,
activeAddrCmd,
setAddrSelMsgNumCmd,
Expand Down
22 changes: 22 additions & 0 deletions cli/flag.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,25 @@ func ParseFlagToReplaceMessaeParams(cctx *cli.Context) (*messager.ReplacMessageP

return &params, nil
}

var reallyDoItFlag = &cli.BoolFlag{
Name: "really-do-it",
Usage: "specify this flag to confirm mark-bad",
}

var outputTypeFlag = &cli.StringFlag{
Name: "output-type",
Usage: "output type support json and table (default table)",
Value: "table",
}

var FromFlag = &cli.StringFlag{
Name: "from",
Usage: "address to send message",
}

var verboseFlag = &cli.BoolFlag{
Name: "verbose",
Usage: "verbose address",
Value: false,
}
197 changes: 41 additions & 156 deletions cli/msg.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package cli

import (
"bytes"
"encoding/json"
"errors"
"fmt"
Expand All @@ -12,23 +11,13 @@ import (
"github.com/urfave/cli/v2"

"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/crypto"
"github.com/filecoin-project/go-state-types/exitcode"

"github.com/filecoin-project/venus-messager/cli/tablewriter"
"github.com/filecoin-project/venus-messager/utils"

"github.com/filecoin-project/venus/pkg/constants"
venusTypes "github.com/filecoin-project/venus/venus-shared/types"
types "github.com/filecoin-project/venus/venus-shared/types/messager"
msgparser "github.com/filecoin-project/venus/venus-shared/utils/msg_parser"
)

var ReallyDoItFlag = &cli.BoolFlag{
Name: "really-do-it",
Usage: "specify this flag to confirm mark-bad",
}

var MsgCmds = &cli.Command{
Name: "msg",
Usage: "message commands",
Expand All @@ -48,23 +37,6 @@ var MsgCmds = &cli.Command{
},
}

var outputTypeFlag = &cli.StringFlag{
Name: "output-type",
Usage: "output type support json and table (default table)",
Value: "table",
}

var FromFlag = &cli.StringFlag{
Name: "from",
Usage: "address to send message",
}

var verboseFlag = &cli.BoolFlag{
Name: "verbose",
Usage: "verbose address",
Value: false,
}

var searchCmd = &cli.Command{
Name: "search",
Usage: "search message",
Expand Down Expand Up @@ -114,7 +86,7 @@ var searchCmd = &cli.Command{
return fmt.Errorf("value of query must be entered")
}

bytes, err := json.MarshalIndent(transformMessage(msg), "", "\t")
bytes, err := json.MarshalIndent(transformMessage(msg, nodeAPI), "", "\t")
if err != nil {
return err
}
Expand Down Expand Up @@ -227,6 +199,17 @@ state:
return err
}
defer closer()

nodeAPI, nodeAPICloser, err := getNodeAPI(ctx)
if err != nil {
return err
}
defer nodeAPICloser()

if err := LoadBuiltinActors(ctx.Context, nodeAPI); err != nil {
return err
}

var from address.Address
if addrStr := ctx.String("from"); len(addrStr) > 0 {
from, err = address.NewFromString(addrStr)
Expand All @@ -246,11 +229,11 @@ state:
}

if ctx.String("output-type") == "table" {
return outputWithTable(msgs, ctx.Bool("verbose"))
return outputWithTable(msgs, ctx.Bool("verbose"), nodeAPI)
}
msgT := make([]*message, 0, len(msgs))
for _, msg := range msgs {
msgT = append(msgT, transformMessage(msg))
msgT = append(msgT, transformMessage(msg, nodeAPI))
}
bytes, err := json.MarshalIndent(msgT, " ", "\t")
if err != nil {
Expand All @@ -277,6 +260,16 @@ var listFailedCmd = &cli.Command{
}
defer closer()

nodeAPI, nodeAPICloser, err := getNodeAPI(ctx)
if err != nil {
return err
}
defer nodeAPICloser()

if err := LoadBuiltinActors(ctx.Context, nodeAPI); err != nil {
return err
}

var msgs []*types.Message

msgs, err = client.ListFailedMessage(ctx.Context)
Expand All @@ -295,11 +288,11 @@ var listFailedCmd = &cli.Command{
}

if ctx.String("output-type") == "table" {
return outputWithTable(msgs, ctx.Bool("verbose"))
return outputWithTable(msgs, ctx.Bool("verbose"), nodeAPI)
}
msgT := make([]*message, 0, len(msgs))
for _, msg := range msgs {
msgT = append(msgT, transformMessage(msg))
msgT = append(msgT, transformMessage(msg, nodeAPI))
}
bytes, err := json.MarshalIndent(msgT, " ", "\t")
if err != nil {
Expand Down Expand Up @@ -332,6 +325,16 @@ var ListBlockedMessageCmd = &cli.Command{
}
defer closer()

nodeAPI, nodeAPICloser, err := getNodeAPI(ctx)
if err != nil {
return err
}
defer nodeAPICloser()

if err := LoadBuiltinActors(ctx.Context, nodeAPI); err != nil {
return err
}

var msgs []*types.Message
var addr address.Address

Expand All @@ -352,11 +355,11 @@ var ListBlockedMessageCmd = &cli.Command{
}

if ctx.String("output-type") == "table" {
return outputWithTable(msgs, ctx.Bool("verbose"))
return outputWithTable(msgs, ctx.Bool("verbose"), nodeAPI)
}
msgT := make([]*message, 0, len(msgs))
for _, msg := range msgs {
msgT = append(msgT, transformMessage(msg))
msgT = append(msgT, transformMessage(msg, nodeAPI))
}
bytes, err := json.MarshalIndent(msgT, " ", "\t")
if err != nil {
Expand All @@ -368,67 +371,6 @@ var ListBlockedMessageCmd = &cli.Command{
},
}

var tw = tablewriter.New(
tablewriter.Col("ID"),
tablewriter.Col("To"),
tablewriter.Col("From"),
tablewriter.Col("Nonce"),
tablewriter.Col("Value"),
tablewriter.Col("GasLimit"),
tablewriter.Col("GasFeeCap"),
tablewriter.Col("GasPremium"),
tablewriter.Col("Method"),
tablewriter.Col("State"),
tablewriter.Col("ExitCode"),
tablewriter.Col("CreateAt"),
)

func outputWithTable(msgs []*types.Message, verbose bool) error {
for _, msgT := range msgs {
msg := transformMessage(msgT)
val := venusTypes.MustParseFIL(msg.Msg.Value.String() + "attofil").String()
row := map[string]interface{}{
"ID": msg.ID,
"To": msg.Msg.To,
"From": msg.Msg.From,
"Nonce": msg.Msg.Nonce,
"Value": val,
"GasLimit": msg.Msg.GasLimit,
"GasFeeCap": msg.Msg.GasFeeCap,
"GasPremium": msg.Msg.GasPremium,
"Method": msg.Msg.Method,
"State": msg.State,
"CreateAt": msg.CreatedAt.Format("2006-01-02 15:04:05"),
}
if !verbose {
if from := msg.Msg.From.String(); len(from) > 9 {
row["From"] = from[:9] + "..."
}
if to := msg.Msg.To.String(); len(to) > 9 {
row["To"] = to[:9] + "..."
}
if len(msg.ID) > 36 {
row["ID"] = msg.ID[:36] + "..."
}
if len(val) > 6 {
row["Value"] = val[:6] + "..."
}
}
if msg.Receipt != nil {
row["ExitCode"] = msg.Receipt.ExitCode
row["Return"] = msg.Receipt.Return
}
tw.Write(row)
}

buf := new(bytes.Buffer)
if err := tw.Flush(buf); err != nil {
return err
}
fmt.Println(buf)
return nil
}

var updateAllFilledMessageCmd = &cli.Command{
Name: "update-all-filled-msg",
Usage: "manual update all filled message state",
Expand Down Expand Up @@ -611,7 +553,7 @@ var markBadCmd = &cli.Command{
Name: "mark-bad",
Usage: "mark bad message",
Flags: []cli.Flag{
ReallyDoItFlag,
reallyDoItFlag,
&cli.StringFlag{
Name: "from",
Usage: "mark unfill message as bad message if specify this flag",
Expand Down Expand Up @@ -672,7 +614,7 @@ var recoverFailedMsgCmd = &cli.Command{
Name: "recover-failed-msg",
Usage: "recover failed messages",
Flags: []cli.Flag{
ReallyDoItFlag,
reallyDoItFlag,
&cli.StringFlag{
Name: "from",
Usage: "mark unfill message as bad message if specify this flag",
Expand Down Expand Up @@ -735,69 +677,12 @@ var recoverFailedMsgCmd = &cli.Command{
},
}

type message struct {
ID string

UnsignedCid *cid.Cid
SignedCid *cid.Cid
Msg venusTypes.Message
Signature *crypto.Signature

Height int64
Confidence int64
Receipt *receipt
TipSetKey venusTypes.TipSetKey

Meta *types.SendSpec

State string

UpdatedAt time.Time
CreatedAt time.Time
}

type receipt struct {
ExitCode exitcode.ExitCode
Return string
GasUsed int64
}

func transformMessage(msg *types.Message) *message {
if msg == nil {
return nil
}

m := &message{
ID: msg.ID,
UnsignedCid: msg.UnsignedCid,
SignedCid: msg.SignedCid,
Msg: msg.Message,
Signature: msg.Signature,
Height: msg.Height,
Confidence: msg.Confidence,
TipSetKey: msg.TipSetKey,
Meta: msg.Meta,
State: msg.State.String(),
UpdatedAt: msg.UpdatedAt,
CreatedAt: msg.CreatedAt,
}
if msg.Receipt != nil {
m.Receipt = &receipt{
ExitCode: msg.Receipt.ExitCode,
Return: string(msg.Receipt.Return),
GasUsed: msg.Receipt.GasUsed,
}
}

return m
}

var clearUnFillMessageCmd = &cli.Command{
Name: "clear-unfill-msg",
Usage: "clear unfill messages by address",
ArgsUsage: "address",
Flags: []cli.Flag{
ReallyDoItFlag,
reallyDoItFlag,
},
Action: func(ctx *cli.Context) error {
client, closer, err := getAPI(ctx)
Expand Down
Loading