@cryptotaxi247 / kubo / commits / 330ee8c79

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 +})