提交 ec9b120a 作者: vyzo 提交者: Łukasz Magiera

namecache: rework follow subcommand

- coalesces pin into add --pin
- add and cancel accept multiple names

License: MIT
Signed-off-by: 's avatarvyzo <vyzo@hackzen.org>
上级 0bb07b5d
...@@ -24,7 +24,6 @@ Periodically resolve and optionally pin IPNS names in the background. ...@@ -24,7 +24,6 @@ Periodically resolve and optionally pin IPNS names in the background.
}, },
Subcommands: map[string]*cmds.Command{ Subcommands: map[string]*cmds.Command{
"add": ipnsFollowAddCmd, "add": ipnsFollowAddCmd,
"pin": ipnsFollowPinCmd,
"list": ipnsFollowListCmd, "list": ipnsFollowListCmd,
"cancel": ipnsFollowCancelCmd, "cancel": ipnsFollowCancelCmd,
}, },
...@@ -32,51 +31,18 @@ Periodically resolve and optionally pin IPNS names in the background. ...@@ -32,51 +31,18 @@ Periodically resolve and optionally pin IPNS names in the background.
var ipnsFollowAddCmd = &cmds.Command{ var ipnsFollowAddCmd = &cmds.Command{
Helptext: cmdkit.HelpText{ Helptext: cmdkit.HelpText{
Tagline: "Follow a name without pinning", Tagline: "Follow one or more names",
ShortDescription: ` ShortDescription: `
Follows an IPNS name by periodically resolving in the backround. Follows an IPNS name by periodically resolving in the backround.
`, `,
}, },
Arguments: []cmdkit.Argument{ Arguments: []cmdkit.Argument{
cmdkit.StringArg("name", true, false, "IPNS Name to follow."), cmdkit.StringArg("name", true, true, "IPNS Name to follow."),
}, },
Run: func(req cmds.Request, res cmds.Response) { Options: []cmdkit.Option{
n, err := req.InvocContext().GetNode() cmdkit.BoolOption("pin", "recursively pin the resolved pointer"),
if err != nil {
res.SetError(err, cmdkit.ErrNormal)
return
}
if n.Namecache == nil {
res.SetError(errors.New("IPNS Namecache is not available"), cmdkit.ErrClient)
return
}
err = n.Namecache.Follow(req.Arguments()[0], false)
if err != nil {
res.SetError(err, cmdkit.ErrNormal)
return
}
res.SetOutput(&ipnsFollowResult{"ok"})
}, },
Type: ipnsFollowResult{},
Marshalers: cmds.MarshalerMap{
cmds.Text: marshalFollowResult,
},
}
var ipnsFollowPinCmd = &cmds.Command{
Helptext: cmdkit.HelpText{
Tagline: "Follows and pins a name",
ShortDescription: `
Follows an IPNS name by periodically resolving and recursively
pinning in the backround.
`,
},
Arguments: []cmdkit.Argument{
cmdkit.StringArg("name", true, false, "IPNS Name to follow."),
},
Run: func(req cmds.Request, res cmds.Response) { Run: func(req cmds.Request, res cmds.Response) {
n, err := req.InvocContext().GetNode() n, err := req.InvocContext().GetNode()
if err != nil { if err != nil {
...@@ -89,10 +55,14 @@ pinning in the backround. ...@@ -89,10 +55,14 @@ pinning in the backround.
return return
} }
err = n.Namecache.Follow(req.Arguments()[0], true) pin, _, _ := req.Option("pin").Bool()
if err != nil {
res.SetError(err, cmdkit.ErrNormal) for _, name := range req.Arguments() {
return err = n.Namecache.Follow(name, pin)
if err != nil {
res.SetError(err, cmdkit.ErrNormal)
return
}
} }
res.SetOutput(&ipnsFollowResult{"ok"}) res.SetOutput(&ipnsFollowResult{"ok"})
...@@ -132,7 +102,7 @@ var ipnsFollowCancelCmd = &cmds.Command{ ...@@ -132,7 +102,7 @@ var ipnsFollowCancelCmd = &cmds.Command{
Tagline: "Cancels a follow", Tagline: "Cancels a follow",
}, },
Arguments: []cmdkit.Argument{ Arguments: []cmdkit.Argument{
cmdkit.StringArg("name", true, false, "Name follow to cancel."), cmdkit.StringArg("name", true, true, "Name follow to cancel."),
}, },
Run: func(req cmds.Request, res cmds.Response) { Run: func(req cmds.Request, res cmds.Response) {
n, err := req.InvocContext().GetNode() n, err := req.InvocContext().GetNode()
...@@ -146,10 +116,12 @@ var ipnsFollowCancelCmd = &cmds.Command{ ...@@ -146,10 +116,12 @@ var ipnsFollowCancelCmd = &cmds.Command{
return return
} }
err = n.Namecache.Unfollow(req.Arguments()[0]) for _, name := range req.Arguments() {
if err != nil { err = n.Namecache.Unfollow(name)
res.SetError(err, cmdkit.ErrNormal) if err != nil {
return res.SetError(err, cmdkit.ErrNormal)
return
}
} }
res.SetOutput(&ipnsFollowResult{"ok"}) res.SetOutput(&ipnsFollowResult{"ok"})
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论