cmds2: use cmdDetails on level cmds
Juan Batiz-Benet committed
Nov 13, 2014 at 22:53 UTC
e0ba14c0ebc0629360f1d0dff7600e4da23113ed
3 files changed
+18
-11
cmd/ipfs2/ipfs.go
+2
@@ -78,5 +78,7 @@ var cmdDetailsMap = map[*cmds.Command]cmdDetails{
78
commands.DiagCmd: cmdDetails{cannotRunOnClient: true},
79
commands.VersionCmd: cmdDetails{doesNotUseRepo: true},
80
commands.UpdateCmd: cmdDetails{cannotRunOnDaemon: true},
81
+ commands.UpdateCheckCmd: cmdDetails{},
82
+ commands.UpdateLogCmd: cmdDetails{},
83
commands.LogCmd: cmdDetails{cannotRunOnClient: true},
84
}
cmd/ipfs2/main.go
+12
-7
@@ -267,14 +267,19 @@ func commandShouldRunOnDaemon(req cmds.Request, root *cmds.Command) (bool, error
267
return false, nil
268
}
269
270
- cmd, found := root.Subcommands[path[0]]
271
- if !found {
272
- return false, fmt.Errorf("subcommand %s should be in root", path[0])
273
- }
270
+ var details cmdDetails
271
+ // find the last command in path that has a cmdDetailsMap entry
272
+ cmd := root
273
+ for _, cmp := range path {
274
+ var found bool
275
+ cmd, found = cmd.Subcommands[cmp]
276
+ if !found {
277
+ return false, fmt.Errorf("subcommand %s should be in root", cmp)
278
+ }
279
275
- details, found := cmdDetailsMap[cmd]
276
- if !found {
277
- details = cmdDetails{} // defaults
280
+ if cmdDetails, found := cmdDetailsMap[cmd]; found {
281
+ details = cmdDetails
282
+ }
283
}
284
log.Debugf("cmd perms for +%v: %s", path, details.String())
285
core/commands2/update.go
+4
-4
@@ -29,8 +29,8 @@ var UpdateCmd = &cmds.Command{
29
},
30
Type: &UpdateOutput{},
31
Subcommands: map[string]*cmds.Command{
32
- "check": updateCheckCmd,
33
- "log": updateLogCmd,
32
+ "check": UpdateCheckCmd,
33
+ "log": UpdateLogCmd,
34
},
35
Marshalers: cmds.MarshalerMap{
36
cmds.Text: func(res cmds.Response) ([]byte, error) {
@@ -47,7 +47,7 @@ var UpdateCmd = &cmds.Command{
47
},
48
}
49
50
-var updateCheckCmd = &cmds.Command{
50
+var UpdateCheckCmd = &cmds.Command{
51
Helptext: cmds.HelpText{
52
Tagline: "Checks if updates are available",
53
ShortDescription: `
@@ -80,7 +80,7 @@ Nothing will be downloaded or installed.
80
},
81
}
82
83
-var updateLogCmd = &cmds.Command{
83
+var UpdateLogCmd = &cmds.Command{
84
Helptext: cmds.HelpText{
85
Tagline: "List the changelog for the latest versions of IPFS",
86
ShortDescription: "This command is not yet implemented.",