@cryptotaxi247 / kubo / commits / 1f6dd26ca

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.",