mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-30 18:13:54 +08:00
added command struct for makeCommand
This commit is contained in:
@ -29,4 +29,9 @@ func init() {
|
|||||||
cmdIpfsAdd.Flag.Bool("r", false, "add objects recursively")
|
cmdIpfsAdd.Flag.Bool("r", false, "add objects recursively")
|
||||||
}
|
}
|
||||||
|
|
||||||
var addCmd = MakeCommand("add", []string{"r"}, commands.Add)
|
var addCmd = makeCommand(command{
|
||||||
|
name: "add",
|
||||||
|
args: 1,
|
||||||
|
flags: []string{"r"},
|
||||||
|
cmdFn: commands.Add,
|
||||||
|
})
|
||||||
|
@ -18,7 +18,12 @@ var cmdIpfsCat = &commander.Command{
|
|||||||
Flag: *flag.NewFlagSet("ipfs-cat", flag.ExitOnError),
|
Flag: *flag.NewFlagSet("ipfs-cat", flag.ExitOnError),
|
||||||
}
|
}
|
||||||
|
|
||||||
var catCmd = MakeCommand("cat", nil, commands.Cat)
|
var catCmd = makeCommand(command{
|
||||||
|
name: "cat",
|
||||||
|
args: 1,
|
||||||
|
flags: nil,
|
||||||
|
cmdFn: commands.Cat,
|
||||||
|
})
|
||||||
|
|
||||||
/*
|
/*
|
||||||
func catCmd(c *commander.Command, inp []string) error {
|
func catCmd(c *commander.Command, inp []string) error {
|
||||||
|
@ -1,26 +1,34 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
|
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
|
||||||
"github.com/jbenet/go-ipfs/config"
|
|
||||||
"github.com/jbenet/go-ipfs/core/commands"
|
"github.com/jbenet/go-ipfs/core/commands"
|
||||||
"github.com/jbenet/go-ipfs/daemon"
|
"github.com/jbenet/go-ipfs/daemon"
|
||||||
u "github.com/jbenet/go-ipfs/util"
|
u "github.com/jbenet/go-ipfs/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CommanderFunc is a function that can be passed into the Commander library as
|
// command is the descriptor of an ipfs daemon command.
|
||||||
// a command handler. Defined here because commander lacks this definition.
|
// Used with makeCommand to proxy over commands via the daemon.
|
||||||
type CommanderFunc func(*commander.Command, []string) error
|
type command struct {
|
||||||
|
name string
|
||||||
|
args int
|
||||||
|
flags []string
|
||||||
|
online bool
|
||||||
|
cmdFn commands.CmdFunc
|
||||||
|
}
|
||||||
|
|
||||||
// MakeCommand Wraps a commands.CmdFunc so that it may be safely run by the
|
// commanderFunc is a function that can be passed into the Commander library as
|
||||||
|
// a command handler. Defined here because commander lacks this definition.
|
||||||
|
type commanderFunc func(*commander.Command, []string) error
|
||||||
|
|
||||||
|
// makeCommand Wraps a commands.CmdFunc so that it may be safely run by the
|
||||||
// commander library
|
// commander library
|
||||||
func MakeCommand(cmdName string, expargs []string, cmdFn commands.CmdFunc) CommanderFunc {
|
func makeCommand(cmdDesc command) commanderFunc {
|
||||||
return func(c *commander.Command, inp []string) error {
|
return func(c *commander.Command, inp []string) error {
|
||||||
if len(inp) < 1 {
|
if len(inp) < cmdDesc.args {
|
||||||
u.POut(c.Long)
|
u.POut(c.Long)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -29,34 +37,25 @@ func MakeCommand(cmdName string, expargs []string, cmdFn commands.CmdFunc) Comma
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
confapi, err := config.ReadConfigKey(confdir+"/config", "Addresses.API")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
apiaddr, ok := confapi.(string)
|
|
||||||
if !ok {
|
|
||||||
return errors.New("ApiAddress in config file was not a string")
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd := daemon.NewCommand()
|
cmd := daemon.NewCommand()
|
||||||
cmd.Command = cmdName
|
cmd.Command = cmdDesc.name
|
||||||
cmd.Args = inp
|
cmd.Args = inp
|
||||||
|
|
||||||
for _, a := range expargs {
|
for _, a := range cmdDesc.flags {
|
||||||
cmd.Opts[a] = c.Flag.Lookup(a).Value.Get()
|
cmd.Opts[a] = c.Flag.Lookup(a).Value.Get()
|
||||||
}
|
}
|
||||||
err = daemon.SendCommand(cmd, apiaddr)
|
|
||||||
|
err = daemon.SendCommand(cmd, confdir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Executing command locally: %s", err)
|
fmt.Printf("Executing command locally: %s", err)
|
||||||
// Do locally
|
// Do locally
|
||||||
n, err := localNode(confdir, false)
|
n, err := localNode(confdir, cmdDesc.online)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Local node creation failed.")
|
fmt.Println("Local node creation failed.")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return cmdFn(n, cmd.Args, cmd.Opts, os.Stdout)
|
return cmdDesc.cmdFn(n, cmd.Args, cmd.Opts, os.Stdout)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -21,4 +21,9 @@ var cmdIpfsLs = &commander.Command{
|
|||||||
Flag: *flag.NewFlagSet("ipfs-ls", flag.ExitOnError),
|
Flag: *flag.NewFlagSet("ipfs-ls", flag.ExitOnError),
|
||||||
}
|
}
|
||||||
|
|
||||||
var lsCmd = MakeCommand("ls", nil, commands.Ls)
|
var lsCmd = makeCommand(command{
|
||||||
|
name: "ls",
|
||||||
|
args: 1,
|
||||||
|
flags: nil,
|
||||||
|
cmdFn: commands.Ls,
|
||||||
|
})
|
||||||
|
@ -23,4 +23,9 @@ func init() {
|
|||||||
cmdIpfsPin.Flag.Int("d", 1, "recursive depth")
|
cmdIpfsPin.Flag.Int("d", 1, "recursive depth")
|
||||||
}
|
}
|
||||||
|
|
||||||
var pinCmd = MakeCommand("pin", []string{"r", "d"}, commands.Pin)
|
var pinCmd = makeCommand(command{
|
||||||
|
name: "pin",
|
||||||
|
args: 1,
|
||||||
|
flags: []string{"r", "d"},
|
||||||
|
cmdFn: commands.Pin,
|
||||||
|
})
|
||||||
|
@ -28,4 +28,9 @@ func init() {
|
|||||||
cmdIpfsRefs.Flag.Bool("u", false, "unique: list each ref only once")
|
cmdIpfsRefs.Flag.Bool("u", false, "unique: list each ref only once")
|
||||||
}
|
}
|
||||||
|
|
||||||
var refCmd = MakeCommand("refs", []string{"r", "u"}, commands.Refs)
|
var refCmd = makeCommand(command{
|
||||||
|
name: "refs",
|
||||||
|
args: 1,
|
||||||
|
flags: []string{"r", "u"},
|
||||||
|
cmdFn: commands.Refs,
|
||||||
|
})
|
||||||
|
Reference in New Issue
Block a user