@cryptotaxi247 / kubo / commits / f7b6ee3c8

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 }