From 0efe5ee7d5c2e23e188a8990eeafb158b947bcef Mon Sep 17 00:00:00 2001 From: whyrusleeping Date: Thu, 10 Sep 2020 17:32:30 -0700 Subject: [PATCH] include some other changes --- cli/state.go | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/cli/state.go b/cli/state.go index f84375782..1036e8fe5 100644 --- a/cli/state.go +++ b/cli/state.go @@ -27,6 +27,7 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/exitcode" "github.com/filecoin-project/specs-actors/actors/builtin" "github.com/filecoin-project/specs-actors/actors/builtin/exported" @@ -122,7 +123,7 @@ var stateMinerInfo = &cli.Command{ }, } -func parseTipSetString(ts string) ([]cid.Cid, error) { +func ParseTipSetString(ts string) ([]cid.Cid, error) { strs := strings.Split(ts, ",") var cids []cid.Cid @@ -160,7 +161,7 @@ func ParseTipSetRef(ctx context.Context, api api.FullNode, tss string) (*types.T return api.ChainGetTipSetByHeight(ctx, abi.ChainEpoch(h), types.EmptyTSK) } - cids, err := parseTipSetString(tss) + cids, err := ParseTipSetString(tss) if err != nil { return nil, err } @@ -1384,7 +1385,7 @@ var stateCallCmd = &cli.Command{ } if ret.MsgRct.ExitCode != 0 { - return fmt.Errorf("invocation failed (exit: %d): %s", ret.MsgRct.ExitCode, ret.Error) + return fmt.Errorf("invocation failed (exit: %d, gasUsed: %d): %s", ret.MsgRct.ExitCode, ret.MsgRct.GasUsed, ret.Error) } s, err := formatOutput(cctx.String("ret"), ret.MsgRct.Return) @@ -1392,6 +1393,7 @@ var stateCallCmd = &cli.Command{ return fmt.Errorf("failed to format output: %s", err) } + fmt.Printf("gas used: %d\n", ret.MsgRct.GasUsed) fmt.Printf("return: %s\n", s) return nil @@ -1465,11 +1467,11 @@ func parseParamsForMethod(act cid.Cid, method uint64, args []string) ([]byte, er f := methods[method] rf := reflect.TypeOf(f) - if rf.NumIn() != 3 { + if rf.NumIn() != 2 { return nil, fmt.Errorf("expected referenced method to have three arguments") } - paramObj := rf.In(2).Elem() + paramObj := rf.In(1).Elem() if paramObj.NumField() != len(args) { return nil, fmt.Errorf("not enough arguments given to call that method (expecting %d)", paramObj.NumField()) } @@ -1489,6 +1491,18 @@ func parseParamsForMethod(act cid.Cid, method uint64, args []string) ([]byte, er return nil, err } p.Elem().Field(i).Set(reflect.ValueOf(val)) + case reflect.TypeOf(abi.ChainEpoch(0)): + val, err := strconv.ParseInt(args[i], 10, 64) + if err != nil { + return nil, err + } + p.Elem().Field(i).Set(reflect.ValueOf(abi.ChainEpoch(val))) + case reflect.TypeOf(big.Int{}): + val, err := big.FromString(args[i]) + if err != nil { + return nil, err + } + p.Elem().Field(i).Set(reflect.ValueOf(val)) case reflect.TypeOf(peer.ID("")): pid, err := peer.Decode(args[i]) if err != nil {