@cryptotaxi247 / kubo / commits / 4160eaa63

refactor(cmds): use new cmds lib in tar, dns

License: MIT Signed-off-by: Overbool <overbool.xu@gmail.com>

Overbool committed Oct 26, 2018 at 20:51 UTC 4160eaa63793b810faed3ea3cb0ba5ad8f4ad832
4 files changed +49 -77
core/commands/dns.go
+15 -27
@@ -1,16 +1,15 @@
1 package commands
2
3 import (
4 + "fmt"
5 "io"
5 - "strings"
6
7 - cmds "github.com/ipfs/go-ipfs/commands"
8 - e "github.com/ipfs/go-ipfs/core/commands/e"
7 ncmd "github.com/ipfs/go-ipfs/core/commands/name"
8 namesys "github.com/ipfs/go-ipfs/namesys"
9 nsopts "github.com/ipfs/go-ipfs/namesys/opts"
10
13 - "gx/ipfs/Qmde5VP1qUkyQXKCfmEUA7bP64V2HAptbJ7phuPp7jXWwg/go-ipfs-cmdkit"
11 + cmds "gx/ipfs/QmdTmGruUz23vgzym3uWpnAEQdGdGifQqBvP8UXSRjG8gZ/go-ipfs-cmds"
12 + cmdkit "gx/ipfs/Qmde5VP1qUkyQXKCfmEUA7bP64V2HAptbJ7phuPp7jXWwg/go-ipfs-cmdkit"
13 )
14
15 const (
@@ -61,10 +60,9 @@ The resolver can recursively resolve:
60 Options: []cmdkit.Option{
61 cmdkit.BoolOption(dnsRecursiveOptionName, "r", "Resolve until the result is not a DNS link."),
62 },
64 - Run: func(req cmds.Request, res cmds.Response) {
65 -
66 - recursive, _, _ := req.Option(dnsRecursiveOptionName).Bool()
67 - name := req.Arguments()[0]
63 + Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
64 + recursive, _ := req.Options[dnsRecursiveOptionName].(bool)
65 + name := req.Arguments[0]
66 resolver := namesys.NewDNSResolver()
67
68 var ropts []nsopts.ResolveOpt
@@ -72,30 +70,20 @@ The resolver can recursively resolve:
70 ropts = append(ropts, nsopts.Depth(1))
71 }
72
75 - output, err := resolver.Resolve(req.Context(), name, ropts...)
73 + output, err := resolver.Resolve(req.Context, name, ropts...)
74 if err == namesys.ErrResolveFailed {
77 - res.SetError(err, cmdkit.ErrNotFound)
78 - return
75 + return err
76 }
77 if err != nil {
81 - res.SetError(err, cmdkit.ErrNormal)
82 - return
78 + return err
79 }
84 - res.SetOutput(&ncmd.ResolvedPath{Path: output})
80 + return res.Emit(&ncmd.ResolvedPath{Path: output})
81 },
86 - Marshalers: cmds.MarshalerMap{
87 - cmds.Text: func(res cmds.Response) (io.Reader, error) {
88 - v, err := unwrapOutput(res.Output())
89 - if err != nil {
90 - return nil, err
91 - }
92 -
93 - output, ok := v.(*ncmd.ResolvedPath)
94 - if !ok {
95 - return nil, e.TypeErr(output, v)
96 - }
97 - return strings.NewReader(output.Path.String() + "\n"), nil
98 - },
82 + Encoders: cmds.EncoderMap{
83 + cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *ncmd.ResolvedPath) error {
84 + fmt.Fprintln(w, out.Path.String())
85 + return nil
86 + }),
87 },
88 Type: ncmd.ResolvedPath{},
89 }
core/commands/root.go
+3 -3
@@ -127,7 +127,7 @@ var rootSubcommands = map[string]*cmds.Command{
127 "dag": lgc.NewCommand(dag.DagCmd),
128 "dht": lgc.NewCommand(DhtCmd),
129 "diag": lgc.NewCommand(DiagCmd),
130 - "dns": lgc.NewCommand(DNSCmd),
130 + "dns": DNSCmd,
131 "id": IDCmd,
132 "key": KeyCmd,
133 "log": lgc.NewCommand(LogCmd),
@@ -141,7 +141,7 @@ var rootSubcommands = map[string]*cmds.Command{
141 "refs": lgc.NewCommand(RefsCmd),
142 "resolve": ResolveCmd,
143 "swarm": SwarmCmd,
144 - "tar": lgc.NewCommand(TarCmd),
144 + "tar": TarCmd,
145 "file": lgc.NewCommand(unixfs.UnixFSCmd),
146 "update": lgc.NewCommand(ExternalBinary()),
147 "urlstore": urlStoreCmd,
@@ -167,7 +167,7 @@ var rootROSubcommands = map[string]*cmds.Command{
167 },
168 },
169 "get": GetCmd,
170 - "dns": lgc.NewCommand(DNSCmd),
170 + "dns": DNSCmd,
171 "ls": lgc.NewCommand(LsCmd),
172 "name": &cmds.Command{
173 Subcommands: map[string]*cmds.Command{
core/commands/tar.go
+30 -46
@@ -1,18 +1,18 @@
1 package commands
2
3 import (
4 + "fmt"
5 "io"
5 - "strings"
6
7 - cmds "github.com/ipfs/go-ipfs/commands"
7 core "github.com/ipfs/go-ipfs/core"
9 - e "github.com/ipfs/go-ipfs/core/commands/e"
8 + cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv"
9 coreiface "github.com/ipfs/go-ipfs/core/coreapi/interface"
10 tar "github.com/ipfs/go-ipfs/tar"
12 - path "gx/ipfs/QmRKuTyCzg7HFBcV1YUhzStroGtJSb8iWgyxfsDCwFhWTS/go-path"
13 - dag "gx/ipfs/QmY8BMUSpCwNiTmFhACmC9Bt1qT63cHP35AoQAus4x14qH/go-merkledag"
11
15 - "gx/ipfs/Qmde5VP1qUkyQXKCfmEUA7bP64V2HAptbJ7phuPp7jXWwg/go-ipfs-cmdkit"
12 + "gx/ipfs/QmRKuTyCzg7HFBcV1YUhzStroGtJSb8iWgyxfsDCwFhWTS/go-path"
13 + dag "gx/ipfs/QmY8BMUSpCwNiTmFhACmC9Bt1qT63cHP35AoQAus4x14qH/go-merkledag"
14 + cmds "gx/ipfs/QmdTmGruUz23vgzym3uWpnAEQdGdGifQqBvP8UXSRjG8gZ/go-ipfs-cmds"
15 + cmdkit "gx/ipfs/Qmde5VP1qUkyQXKCfmEUA7bP64V2HAptbJ7phuPp7jXWwg/go-ipfs-cmdkit"
16 )
17
18 var TarCmd = &cmds.Command{
@@ -38,47 +38,36 @@ represent it.
38 Arguments: []cmdkit.Argument{
39 cmdkit.FileArg("file", true, false, "Tar file to add.").EnableStdin(),
40 },
41 - Run: func(req cmds.Request, res cmds.Response) {
42 - nd, err := req.InvocContext().GetNode()
41 + Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
42 + nd, err := cmdenv.GetNode(env)
43 if err != nil {
44 - res.SetError(err, cmdkit.ErrNormal)
45 - return
44 + return err
45 }
46
48 - fi, err := req.Files().NextFile()
47 + fi, err := req.Files.NextFile()
48 if err != nil {
50 - res.SetError(err, cmdkit.ErrNormal)
51 - return
49 + return err
50 }
51
54 - node, err := tar.ImportTar(req.Context(), fi, nd.DAG)
52 + node, err := tar.ImportTar(req.Context, fi, nd.DAG)
53 if err != nil {
56 - res.SetError(err, cmdkit.ErrNormal)
57 - return
54 + return err
55 }
56
57 c := node.Cid()
58
59 fi.FileName()
63 - res.SetOutput(&coreiface.AddEvent{
60 + return res.Emit(&coreiface.AddEvent{
61 Name: fi.FileName(),
62 Hash: c.String(),
63 })
64 },
65 Type: coreiface.AddEvent{},
69 - Marshalers: cmds.MarshalerMap{
70 - cmds.Text: func(res cmds.Response) (io.Reader, error) {
71 - v, err := unwrapOutput(res.Output())
72 - if err != nil {
73 - return nil, err
74 - }
75 -
76 - o, ok := v.(*coreiface.AddEvent)
77 - if !ok {
78 - return nil, e.TypeErr(o, v)
79 - }
80 - return strings.NewReader(o.Hash + "\n"), nil
81 - },
66 + Encoders: cmds.EncoderMap{
67 + cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *coreiface.AddEvent) error {
68 + fmt.Fprintln(w, out.Hash)
69 + return nil
70 + }),
71 },
72 }
73
@@ -93,37 +82,32 @@ var tarCatCmd = &cmds.Command{
82 Arguments: []cmdkit.Argument{
83 cmdkit.StringArg("path", true, false, "ipfs path of archive to export.").EnableStdin(),
84 },
96 - Run: func(req cmds.Request, res cmds.Response) {
97 - nd, err := req.InvocContext().GetNode()
85 + Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
86 + nd, err := cmdenv.GetNode(env)
87 if err != nil {
99 - res.SetError(err, cmdkit.ErrNormal)
100 - return
88 + return err
89 }
90
103 - p, err := path.ParsePath(req.Arguments()[0])
91 + p, err := path.ParsePath(req.Arguments[0])
92 if err != nil {
105 - res.SetError(err, cmdkit.ErrNormal)
106 - return
93 + return err
94 }
95
109 - root, err := core.Resolve(req.Context(), nd.Namesys, nd.Resolver, p)
96 + root, err := core.Resolve(req.Context, nd.Namesys, nd.Resolver, p)
97 if err != nil {
111 - res.SetError(err, cmdkit.ErrNormal)
112 - return
98 + return err
99 }
100
101 rootpb, ok := root.(*dag.ProtoNode)
102 if !ok {
117 - res.SetError(dag.ErrNotProtobuf, cmdkit.ErrNormal)
118 - return
103 + return dag.ErrNotProtobuf
104 }
105
121 - r, err := tar.ExportTar(req.Context(), rootpb, nd.DAG)
106 + r, err := tar.ExportTar(req.Context, rootpb, nd.DAG)
107 if err != nil {
123 - res.SetError(err, cmdkit.ErrNormal)
124 - return
108 + return err
109 }
110
127 - res.SetOutput(r)
111 + return res.Emit(r)
112 },
113 }
core/commands/version.go
+1 -1
@@ -8,7 +8,7 @@ import (
8 version "github.com/ipfs/go-ipfs"
9 fsrepo "github.com/ipfs/go-ipfs/repo/fsrepo"
10
11 - cmds "gx/ipfs/QmRRovo1DE6i5cMjCbf19mQCSuszF6SKwdZNUMS7MtBnH1/go-ipfs-cmds"
11 + cmds "gx/ipfs/QmdTmGruUz23vgzym3uWpnAEQdGdGifQqBvP8UXSRjG8gZ/go-ipfs-cmds"
12 "gx/ipfs/Qmde5VP1qUkyQXKCfmEUA7bP64V2HAptbJ7phuPp7jXWwg/go-ipfs-cmdkit"
13 )
14