From fd5981b7ee915ee4baea89385893485f14964bcd Mon Sep 17 00:00:00 2001 From: Aayush Date: Thu, 23 Jun 2022 16:31:15 -0400 Subject: [PATCH] feat: shed: print out actor code CIDs in manifest cid checker --- cmd/lotus-shed/cid.go | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/cmd/lotus-shed/cid.go b/cmd/lotus-shed/cid.go index 6540f83587c..a8534eff2f3 100644 --- a/cmd/lotus-shed/cid.go +++ b/cmd/lotus-shed/cid.go @@ -5,8 +5,10 @@ import ( "encoding/hex" "fmt" "os" + "text/tabwriter" "github.com/ipfs/go-cid" + cbor "github.com/ipfs/go-ipld-cbor" "github.com/ipld/go-car" mh "github.com/multiformats/go-multihash" "github.com/urfave/cli/v2" @@ -15,6 +17,8 @@ import ( "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/lotus/blockstore" + "github.com/filecoin-project/lotus/chain/actors" + "github.com/filecoin-project/lotus/chain/actors/adt" ) var cidCmd = &cli.Command{ @@ -22,7 +26,7 @@ var cidCmd = &cli.Command{ Usage: "Cid command", Subcommands: cli.Commands{ cidIdCmd, - cidFromCarCmd, + inspectBundleCmd, }, } @@ -90,9 +94,9 @@ var cidIdCmd = &cli.Command{ }, } -var cidFromCarCmd = &cli.Command{ - Name: "manifest-cid-from-car", - Usage: "Get the manifest CID from a car file", +var inspectBundleCmd = &cli.Command{ + Name: "inspect-bundle", + Usage: "Get the manifest CID from a car file, as well as the actor code CIDs", ArgsUsage: "[path]", Action: func(cctx *cli.Context) error { ctx := cctx.Context @@ -104,6 +108,7 @@ var cidFromCarCmd = &cli.Command{ } bs := blockstore.NewMemory() + wrapBs := adt.WrapStore(ctx, cbor.NewCborStore(bs)) hdr, err := car.LoadCar(ctx, bs, f) if err != nil { @@ -114,6 +119,19 @@ var cidFromCarCmd = &cli.Command{ fmt.Printf("Manifest CID: %s\n", manifestCid.String()) - return nil + entries, err := actors.ReadManifest(ctx, wrapBs, manifestCid) + if err != nil { + return xerrors.Errorf("error loading manifest: %w", err) + } + + tw := tabwriter.NewWriter(os.Stdout, 2, 4, 2, ' ', 0) + _, _ = fmt.Fprintln(tw, "\nActor\tCID\t") + + for name, cid := range entries { + _, _ = fmt.Fprintf(tw, "%v\t%v\n", name, cid) + + } + + return tw.Flush() }, }