88 "github.com/dustin/go-humanize"
99 mdag "github.com/ipfs/boxo/ipld/merkledag"
1010 "github.com/ipfs/boxo/ipld/merkledag/traverse"
11- "github.com/ipfs/boxo/ipld/unixfs"
1211 cid "github.com/ipfs/go-cid"
1312 cmds "github.com/ipfs/go-ipfs-cmds"
1413 "github.com/ipfs/kubo/core/commands/cmdenv"
@@ -26,7 +25,6 @@ func dagStat(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment)
2625 if val , specified := req .Options [progressOptionName ].(bool ); specified {
2726 progressive = val
2827 }
29-
3028 api , err := cmdenv .GetApi (env , req )
3129 if err != nil {
3230 return err
@@ -35,7 +33,6 @@ func dagStat(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment)
3533
3634 cidSet := cid .NewSet ()
3735 dagStatSummary := & DagStatSummary {DagStatsArray : []* DagStat {}}
38-
3936 for _ , a := range req .Arguments {
4037 p , err := cmdutils .PathOrCidPath (a )
4138 if err != nil {
@@ -53,45 +50,24 @@ func dagStat(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment)
5350 if err != nil {
5451 return err
5552 }
56-
5753 dagstats := & DagStat {Cid : rp .RootCid ()}
5854 dagStatSummary .appendStats (dagstats )
59-
60- chunkCids := cid .NewSet ()
6155 err = traverse .Traverse (obj , traverse.Options {
6256 DAG : nodeGetter ,
6357 Order : traverse .DFSPre ,
6458 Func : func (current traverse.State ) error {
65- nd := current .Node
66- currentNodeSize := uint64 (len (nd .RawData ()))
59+ currentNodeSize := uint64 (len (current .Node .RawData ()))
6760 dagstats .Size += currentNodeSize
6861 dagstats .NumBlocks ++
69-
70- if pn , ok := nd .(* mdag.ProtoNode ); ok {
71- if fsn , err := unixfs .FSNodeFromBytes (pn .Data ()); err == nil {
72- if fsn .Type () == unixfs .TFile && len (pn .Links ()) > 0 {
73- for _ , l := range pn .Links () {
74- chunkCids .Add (l .Cid )
75- }
76- }
77- if ! chunkCids .Has (nd .Cid ()) {
78- // Count as a file only if not a chunk block
79- switch fsn .Type () {
80- case unixfs .TFile , unixfs .TRaw , unixfs .TSymlink , unixfs .TMetadata :
81- dagstats .NumFiles ++
82- }
83- }
84- }
85- }
86-
87- if ! cidSet .Has (nd .Cid ()) {
62+ if ! cidSet .Has (current .Node .Cid ()) {
8863 dagStatSummary .incrementTotalSize (currentNodeSize )
8964 }
9065 dagStatSummary .incrementRedundantSize (currentNodeSize )
91- cidSet .Add (nd .Cid ())
92-
66+ cidSet .Add (current .Node .Cid ())
9367 if progressive {
94- return res .Emit (dagStatSummary )
68+ if err := res .Emit (dagStatSummary ); err != nil {
69+ return err
70+ }
9571 }
9672 return nil
9773 },
@@ -106,13 +82,10 @@ func dagStat(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment)
10682 dagStatSummary .UniqueBlocks = cidSet .Len ()
10783 dagStatSummary .calculateSummary ()
10884
109- var totalFiles int64
110- for _ , s := range dagStatSummary .DagStatsArray {
111- totalFiles += s .NumFiles
85+ if err := res .Emit (dagStatSummary ); err != nil {
86+ return err
11287 }
113- dagStatSummary .NumFiles = totalFiles
114-
115- return res .Emit (dagStatSummary )
88+ return nil
11689}
11790
11891func finishCLIStat (res cmds.Response , re cmds.ResponseEmitter ) error {
@@ -149,10 +122,7 @@ func finishCLIStat(res cmds.Response, re cmds.ResponseEmitter) error {
149122 totalBlocks += stat .NumBlocks
150123 totalSize += stat .Size
151124 }
152- fmt .Fprintf (os .Stderr ,
153- "Fetched/Processed %d blocks, %d bytes (%s)\r " ,
154- totalBlocks , totalSize , humanize .Bytes (totalSize ),
155- )
125+ fmt .Fprintf (os .Stderr , "Fetched/Processed %d blocks, %d bytes (%s)\r " , totalBlocks , totalSize , humanize .Bytes (totalSize ))
156126 }
157127 default :
158128 return e .TypeErr (out , v )
0 commit comments