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