@cryptotaxi247 / kubo / commits / e2bad6ec5

make files stat --with-local return immediately when no data is present

License: MIT Signed-off-by: Michael Muré <batolettre@gmail.com>

Michael Muré committed Feb 21, 2018 at 18:41 UTC e2bad6ec5e107691c10581067b20cff8e97086f5
1 file changed +17 -11
core/commands/files.go
+17 -11
@@ -125,7 +125,20 @@ var filesStatCmd = &cmds.Command{
125 return
126 }
127
128 - nd, err := getNodeFromPath(req.Context, node, path)
128 + withLocal, _ := req.Options["with-local"].(bool)
129 +
130 + var dagserv ipld.DAGService
131 + if withLocal {
132 + // an offline DAGService will not fetch from the network
133 + dagserv = dag.NewDAGService(bservice.New(
134 + node.Blockstore,
135 + offline.Exchange(node.Blockstore),
136 + ))
137 + } else {
138 + dagserv = node.DAG
139 + }
140 +
141 + nd, err := getNodeFromPath(req.Context, node, dagserv, path)
142 if err != nil {
143 res.SetError(err, cmdkit.ErrNormal)
144 return
@@ -137,18 +150,11 @@ var filesStatCmd = &cmds.Command{
150 return
151 }
152
140 - withLocal, _ := req.Options["with-local"].(bool)
153 if !withLocal {
154 res.Emit(o)
155 return
156 }
157
146 - // an offline DAGService will not fetch from the network
147 - dagserv := dag.NewDAGService(bservice.New(
148 - node.Blockstore,
149 - offline.Exchange(node.Blockstore),
150 - ))
151 -
158 local, sizeLocal, err := walkBlock(req.Context, dagserv, nd)
159
160 o.WithLocality = true
@@ -321,7 +327,7 @@ var filesCpCmd = &oldcmds.Command{
327 dst += gopath.Base(src)
328 }
329
324 - nd, err := getNodeFromPath(req.Context(), node, src)
330 + nd, err := getNodeFromPath(req.Context(), node, node.DAG, src)
331 if err != nil {
332 res.SetError(err, cmdkit.ErrNormal)
333 return
@@ -345,7 +351,7 @@ var filesCpCmd = &oldcmds.Command{
351 },
352 }
353
348 -func getNodeFromPath(ctx context.Context, node *core.IpfsNode, p string) (ipld.Node, error) {
354 +func getNodeFromPath(ctx context.Context, node *core.IpfsNode, dagservice ipld.DAGService, p string) (ipld.Node, error) {
355 switch {
356 case strings.HasPrefix(p, "/ipfs/"):
357 np, err := path.ParsePath(p)
@@ -354,7 +360,7 @@ func getNodeFromPath(ctx context.Context, node *core.IpfsNode, p string) (ipld.N
360 }
361
362 resolver := &resolver.Resolver{
357 - DAG: node.DAG,
363 + DAG: dagservice,
364 ResolveOnce: uio.ResolveUnixfsOnce,
365 }
366