refact(cmd/repo): repo fsck and repo version uses new cmd lib
License: MIT Signed-off-by: chenminjian <727180553@qq.com>
chenminjian committed
Oct 27, 2018 at 13:39 UTC
f7b6ee3c871ed84cb8e972faea596d7ce7b15de1
1 file changed
+28
-40
core/commands/repo.go
+28
-40
@@ -42,8 +42,8 @@ var RepoCmd = &cmds.Command{
42
Subcommands: map[string]*cmds.Command{
43
"stat": repoStatCmd,
44
"gc": repoGcCmd,
45
- "fsck": lgc.NewCommand(RepoFsckCmd),
46
- "version": lgc.NewCommand(repoVersionCmd),
45
+ "fsck": RepoFsckCmd,
46
+ "version": repoVersionCmd,
47
"verify": lgc.NewCommand(repoVerifyCmd),
48
},
49
}
@@ -224,7 +224,7 @@ Version string The repo version.
224
},
225
}
226
227
-var RepoFsckCmd = &oldcmds.Command{
227
+var RepoFsckCmd = &cmds.Command{
228
Helptext: cmdkit.HelpText{
229
Tagline: "Remove repo lockfiles.",
230
ShortDescription: `
@@ -233,13 +233,15 @@ lockfiles, as well as the api file. This command can only run when no ipfs
233
daemons are running.
234
`,
235
},
236
- Run: func(req oldcmds.Request, res oldcmds.Response) {
237
- configRoot := req.InvocContext().ConfigRoot
236
+ Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
237
+ configRoot, err := cmdenv.GetConfigRoot(env)
238
+ if err != nil {
239
+ return err
240
+ }
241
242
dsPath, err := config.DataStorePath(configRoot)
243
if err != nil {
241
- res.SetError(err, cmdkit.ErrNormal)
242
- return
244
+ return err
245
}
246
247
dsLockFile := filepath.Join(dsPath, "LOCK") // TODO: get this lockfile programmatically
@@ -252,25 +254,25 @@ daemons are running.
254
255
err = os.Remove(repoLockFile)
256
if err != nil && !os.IsNotExist(err) {
255
- res.SetError(err, cmdkit.ErrNormal)
256
- return
257
+ return err
258
}
259
err = os.Remove(dsLockFile)
260
if err != nil && !os.IsNotExist(err) {
260
- res.SetError(err, cmdkit.ErrNormal)
261
- return
261
+ return err
262
}
263
err = os.Remove(apiFile)
264
if err != nil && !os.IsNotExist(err) {
265
- res.SetError(err, cmdkit.ErrNormal)
266
- return
265
+ return err
266
}
267
269
- res.SetOutput(&MessageOutput{"Lockfiles have been removed.\n"})
268
+ return cmds.EmitOnce(res, &MessageOutput{"Lockfiles have been removed.\n"})
269
},
270
Type: MessageOutput{},
272
- Marshalers: oldcmds.MarshalerMap{
273
- oldcmds.Text: MessageTextMarshaler,
271
+ Encoders: cmds.EncoderMap{
272
+ cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *MessageOutput) error {
273
+ fmt.Fprintf(w, out.Message)
274
+ return nil
275
+ }),
276
},
277
}
278
@@ -409,7 +411,7 @@ var repoVerifyCmd = &oldcmds.Command{
411
},
412
}
413
412
-var repoVersionCmd = &oldcmds.Command{
414
+var repoVersionCmd = &cmds.Command{
415
Helptext: cmdkit.HelpText{
416
Tagline: "Show the repo version.",
417
ShortDescription: `
@@ -420,36 +422,22 @@ var repoVersionCmd = &oldcmds.Command{
422
Options: []cmdkit.Option{
423
cmdkit.BoolOption(repoQuietOptionName, "q", "Write minimal output."),
424
},
423
- Run: func(req oldcmds.Request, res oldcmds.Response) {
424
- res.SetOutput(&RepoVersion{
425
+ Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
426
+ return cmds.EmitOnce(res, &RepoVersion{
427
Version: fmt.Sprint(fsrepo.RepoVersion),
428
})
429
},
430
Type: RepoVersion{},
429
- Marshalers: oldcmds.MarshalerMap{
430
- oldcmds.Text: func(res oldcmds.Response) (io.Reader, error) {
431
- v, err := unwrapOutput(res.Output())
432
- if err != nil {
433
- return nil, err
434
- }
435
- response, ok := v.(*RepoVersion)
436
- if !ok {
437
- return nil, e.TypeErr(response, v)
438
- }
439
-
440
- quiet, _, err := res.Request().Option("quiet").Bool()
441
- if err != nil {
442
- return nil, err
443
- }
431
+ Encoders: cmds.EncoderMap{
432
+ cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *RepoVersion) error {
433
+ quiet, _ := req.Options[repoQuietOptionName].(bool)
434
445
- buf := new(bytes.Buffer)
435
if quiet {
447
- buf = bytes.NewBufferString(fmt.Sprintf("fs-repo@%s\n", response.Version))
436
+ fmt.Fprintf(w, fmt.Sprintf("fs-repo@%s\n", out.Version))
437
} else {
449
- buf = bytes.NewBufferString(fmt.Sprintf("ipfs repo version fs-repo@%s\n", response.Version))
438
+ fmt.Fprintf(w, fmt.Sprintf("ipfs repo version fs-repo@%s\n", out.Version))
439
}
451
- return buf, nil
452
-
453
- },
440
+ return nil
441
+ }),
442
},
443
}