add bootstrap add-default and rm-all subcommands to deprecate flags
License: MIT Signed-off-by: Jeromy <why@ipfs.io>
Jeromy committed
Jul 9, 2016 at 12:32 UTC
1f6dd26cae2751fc221ea525584f303d09aec191
1 file changed
+102
-2
core/commands/bootstrap.go
+102
-2
@@ -51,7 +51,10 @@ in the bootstrap list).
51
},
52
53
Options: []cmds.Option{
54
- cmds.BoolOption("default", "Add default bootstrap nodes.").Default(false),
54
+ cmds.BoolOption("default", "Add default bootstrap nodes. (Deprecated, use 'default' subcommand instead)"),
55
+ },
56
+ Subcommands: map[string]*cmds.Command{
57
+ "default": bootstrapAddDefaultCmd,
58
},
59
60
Run: func(req cmds.Request, res cmds.Response) {
@@ -124,6 +127,58 @@ in the bootstrap list).
127
},
128
}
129
130
+var bootstrapAddDefaultCmd = &cmds.Command{
131
+ Helptext: cmds.HelpText{
132
+ Tagline: "Add default peers to the bootstrap list.",
133
+ ShortDescription: `Outputs a list of peers that were added (that weren't already
134
+in the bootstrap list).`,
135
+ },
136
+ Run: func(req cmds.Request, res cmds.Response) {
137
+ defltPeers, err := config.DefaultBootstrapPeers()
138
+ if err != nil {
139
+ res.SetError(err, cmds.ErrNormal)
140
+ return
141
+ }
142
+
143
+ r, err := fsrepo.Open(req.InvocContext().ConfigRoot)
144
+ if err != nil {
145
+ res.SetError(err, cmds.ErrNormal)
146
+ return
147
+ }
148
+
149
+ defer r.Close()
150
+ cfg, err := r.Config()
151
+ if err != nil {
152
+ res.SetError(err, cmds.ErrNormal)
153
+ return
154
+ }
155
+
156
+ added, err := bootstrapAdd(r, cfg, defltPeers)
157
+ if err != nil {
158
+ res.SetError(err, cmds.ErrNormal)
159
+ return
160
+ }
161
+
162
+ res.SetOutput(&BootstrapOutput{config.BootstrapPeerStrings(added)})
163
+ },
164
+ Type: BootstrapOutput{},
165
+ Marshalers: cmds.MarshalerMap{
166
+ cmds.Text: func(res cmds.Response) (io.Reader, error) {
167
+ v, ok := res.Output().(*BootstrapOutput)
168
+ if !ok {
169
+ return nil, u.ErrCast()
170
+ }
171
+
172
+ buf := new(bytes.Buffer)
173
+ if err := bootstrapWritePeers(buf, "added ", v.Peers); err != nil {
174
+ return nil, err
175
+ }
176
+
177
+ return buf, nil
178
+ },
179
+ },
180
+}
181
+
182
var bootstrapRemoveCmd = &cmds.Command{
183
Helptext: cmds.HelpText{
184
Tagline: "Removes peers from the bootstrap list.",
@@ -135,7 +190,10 @@ var bootstrapRemoveCmd = &cmds.Command{
190
cmds.StringArg("peer", false, true, peerOptionDesc).EnableStdin(),
191
},
192
Options: []cmds.Option{
138
- cmds.BoolOption("all", "Remove all bootstrap peers.").Default(false),
193
+ cmds.BoolOption("all", "Remove all bootstrap peers. (Deprecated, use 'all' subcommand)"),
194
+ },
195
+ Subcommands: map[string]*cmds.Command{
196
+ "all": bootstrapRemoveAllCmd,
197
},
198
Run: func(req cmds.Request, res cmds.Response) {
199
all, _, err := req.Option("all").Bool()
@@ -190,6 +248,48 @@ var bootstrapRemoveCmd = &cmds.Command{
248
},
249
}
250
251
+var bootstrapRemoveAllCmd = &cmds.Command{
252
+ Helptext: cmds.HelpText{
253
+ Tagline: "Removes all peers from the bootstrap list.",
254
+ ShortDescription: `Outputs the list of peers that were removed.`,
255
+ },
256
+
257
+ Run: func(req cmds.Request, res cmds.Response) {
258
+ r, err := fsrepo.Open(req.InvocContext().ConfigRoot)
259
+ if err != nil {
260
+ res.SetError(err, cmds.ErrNormal)
261
+ return
262
+ }
263
+ defer r.Close()
264
+ cfg, err := r.Config()
265
+ if err != nil {
266
+ res.SetError(err, cmds.ErrNormal)
267
+ return
268
+ }
269
+
270
+ removed, err := bootstrapRemoveAll(r, cfg)
271
+ if err != nil {
272
+ res.SetError(err, cmds.ErrNormal)
273
+ return
274
+ }
275
+
276
+ res.SetOutput(&BootstrapOutput{config.BootstrapPeerStrings(removed)})
277
+ },
278
+ Type: BootstrapOutput{},
279
+ Marshalers: cmds.MarshalerMap{
280
+ cmds.Text: func(res cmds.Response) (io.Reader, error) {
281
+ v, ok := res.Output().(*BootstrapOutput)
282
+ if !ok {
283
+ return nil, u.ErrCast()
284
+ }
285
+
286
+ buf := new(bytes.Buffer)
287
+ err := bootstrapWritePeers(buf, "removed ", v.Peers)
288
+ return buf, err
289
+ },
290
+ },
291
+}
292
+
293
var bootstrapListCmd = &cmds.Command{
294
Helptext: cmds.HelpText{
295
Tagline: "Show peers in the bootstrap list.",