added command struct for makeCommand
Juan Batiz-Benet committed
Oct 2, 2014 at 02:50 UTC
330ee8c79f5bb7b9d39f7eebc6be78f06e3cd140
6 files changed
+51
-27
cmd/ipfs/add.go
+6
-1
@@ -29,4 +29,9 @@ func init() {
29
cmdIpfsAdd.Flag.Bool("r", false, "add objects recursively")
30
}
31
32
-var addCmd = MakeCommand("add", []string{"r"}, commands.Add)
32
+var addCmd = makeCommand(command{
33
+ name: "add",
34
+ args: 1,
35
+ flags: []string{"r"},
36
+ cmdFn: commands.Add,
37
+})
cmd/ipfs/cat.go
+6
-1
@@ -18,7 +18,12 @@ var cmdIpfsCat = &commander.Command{
18
Flag: *flag.NewFlagSet("ipfs-cat", flag.ExitOnError),
19
}
20
21
-var catCmd = MakeCommand("cat", nil, commands.Cat)
21
+var catCmd = makeCommand(command{
22
+ name: "cat",
23
+ args: 1,
24
+ flags: nil,
25
+ cmdFn: commands.Cat,
26
+})
27
28
/*
29
func catCmd(c *commander.Command, inp []string) error {
cmd/ipfs/gen.go
+21
-22
@@ -1,26 +1,34 @@
1
package main
2
3
import (
4
- "errors"
4
"fmt"
5
"os"
6
7
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
9
- "github.com/jbenet/go-ipfs/config"
8
"github.com/jbenet/go-ipfs/core/commands"
9
"github.com/jbenet/go-ipfs/daemon"
10
u "github.com/jbenet/go-ipfs/util"
11
)
12
15
-// CommanderFunc is a function that can be passed into the Commander library as
13
+// command is the descriptor of an ipfs daemon command.
14
+// Used with makeCommand to proxy over commands via the daemon.
15
+type command struct {
16
+ name string
17
+ args int
18
+ flags []string
19
+ online bool
20
+ cmdFn commands.CmdFunc
21
+}
22
+
23
+// commanderFunc is a function that can be passed into the Commander library as
24
// a command handler. Defined here because commander lacks this definition.
17
-type CommanderFunc func(*commander.Command, []string) error
25
+type commanderFunc func(*commander.Command, []string) error
26
19
-// MakeCommand Wraps a commands.CmdFunc so that it may be safely run by the
27
+// makeCommand Wraps a commands.CmdFunc so that it may be safely run by the
28
// commander library
21
-func MakeCommand(cmdName string, expargs []string, cmdFn commands.CmdFunc) CommanderFunc {
29
+func makeCommand(cmdDesc command) commanderFunc {
30
return func(c *commander.Command, inp []string) error {
23
- if len(inp) < 1 {
31
+ if len(inp) < cmdDesc.args {
32
u.POut(c.Long)
33
return nil
34
}
@@ -29,34 +37,25 @@ func MakeCommand(cmdName string, expargs []string, cmdFn commands.CmdFunc) Comma
37
return err
38
}
39
32
- confapi, err := config.ReadConfigKey(confdir+"/config", "Addresses.API")
33
- if err != nil {
34
- return err
35
- }
36
-
37
- apiaddr, ok := confapi.(string)
38
- if !ok {
39
- return errors.New("ApiAddress in config file was not a string")
40
- }
41
-
40
cmd := daemon.NewCommand()
43
- cmd.Command = cmdName
41
+ cmd.Command = cmdDesc.name
42
cmd.Args = inp
43
46
- for _, a := range expargs {
44
+ for _, a := range cmdDesc.flags {
45
cmd.Opts[a] = c.Flag.Lookup(a).Value.Get()
46
}
49
- err = daemon.SendCommand(cmd, apiaddr)
47
+
48
+ err = daemon.SendCommand(cmd, confdir)
49
if err != nil {
50
fmt.Printf("Executing command locally: %s", err)
51
// Do locally
53
- n, err := localNode(confdir, false)
52
+ n, err := localNode(confdir, cmdDesc.online)
53
if err != nil {
54
fmt.Println("Local node creation failed.")
55
return err
56
}
57
59
- return cmdFn(n, cmd.Args, cmd.Opts, os.Stdout)
58
+ return cmdDesc.cmdFn(n, cmd.Args, cmd.Opts, os.Stdout)
59
}
60
return nil
61
}
cmd/ipfs/ls.go
+6
-1
@@ -21,4 +21,9 @@ var cmdIpfsLs = &commander.Command{
21
Flag: *flag.NewFlagSet("ipfs-ls", flag.ExitOnError),
22
}
23
24
-var lsCmd = MakeCommand("ls", nil, commands.Ls)
24
+var lsCmd = makeCommand(command{
25
+ name: "ls",
26
+ args: 1,
27
+ flags: nil,
28
+ cmdFn: commands.Ls,
29
+})
cmd/ipfs/pin.go
+6
-1
@@ -23,4 +23,9 @@ func init() {
23
cmdIpfsPin.Flag.Int("d", 1, "recursive depth")
24
}
25
26
-var pinCmd = MakeCommand("pin", []string{"r", "d"}, commands.Pin)
26
+var pinCmd = makeCommand(command{
27
+ name: "pin",
28
+ args: 1,
29
+ flags: []string{"r", "d"},
30
+ cmdFn: commands.Pin,
31
+})
cmd/ipfs/refs.go
+6
-1
@@ -28,4 +28,9 @@ func init() {
28
cmdIpfsRefs.Flag.Bool("u", false, "unique: list each ref only once")
29
}
30
31
-var refCmd = MakeCommand("refs", []string{"r", "u"}, commands.Refs)
31
+var refCmd = makeCommand(command{
32
+ name: "refs",
33
+ args: 1,
34
+ flags: []string{"r", "u"},
35
+ cmdFn: commands.Refs,
36
+})