feat: shed: print out actor code CIDs in manifest cid checker

This commit is contained in:
Aayush 2022-06-23 16:31:15 -04:00
parent b368d08596
commit fd5981b7ee

View File

@ -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()
},
}