// Cat resolves the ipfs path p and returns a reader for that data, if it exists and is availalbe func (s *Shell) Get(ref, outdir string) error { ipfsPath, err := path.ParsePath(ref) if err != nil { return errgo.Notef(err, "get: could not parse %q", ref) } nd, err := core.Resolve(s.ctx, s.node, ipfsPath) if err != nil { return errgo.Notef(err, "get: could not resolve %s", ipfsPath) } r, err := uarchive.DagArchive(s.ctx, nd, outdir, s.node.DAG, false, 0) if err != nil { return err } ext := tar.Extractor{outdir} return ext.Extract(r) }
node, err := req.InvocContext().GetNode() if err != nil { res.SetError(err, cmds.ErrNormal) return } p := path.Path(req.Arguments()[0]) ctx := req.Context() dn, err := core.Resolve(ctx, node, p) if err != nil { res.SetError(err, cmds.ErrNormal) return } archive, _, _ := req.Option("archive").Bool() reader, err := uarchive.DagArchive(ctx, dn, p.String(), node.DAG, archive, cmplvl) if err != nil { res.SetError(err, cmds.ErrNormal) return } res.SetOutput(reader) }, PostRun: func(req cmds.Request, res cmds.Response) { if res.Output() == nil { return } outReader := res.Output().(io.Reader) res.SetOutput(nil) outPath, _, _ := req.Option("output").String() if len(outPath) == 0 {