mirror of https://github.com/docker/docs.git
Backends can receive arguments
This commit is contained in:
parent
c22a80a071
commit
9acaf7597f
|
@ -6,6 +6,8 @@ import (
|
||||||
"github.com/docker/swarmd/backends"
|
"github.com/docker/swarmd/backends"
|
||||||
"github.com/dotcloud/docker/api/server"
|
"github.com/dotcloud/docker/api/server"
|
||||||
"github.com/dotcloud/docker/engine"
|
"github.com/dotcloud/docker/engine"
|
||||||
|
"github.com/flynn/go-shlex"
|
||||||
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
@ -36,10 +38,13 @@ func cmdDaemon(c *cli.Context) {
|
||||||
// multiplexes across all backends (with routing / filtering
|
// multiplexes across all backends (with routing / filtering
|
||||||
// logic along the way).
|
// logic along the way).
|
||||||
back := backends.New()
|
back := backends.New()
|
||||||
backendName := c.String("backend")
|
bName, bArgs, err := parseCmd(c.String("backend"))
|
||||||
fmt.Printf("Loading backend '%s'\n", backendName)
|
if err != nil {
|
||||||
if err := back.Job(backendName).Run(); err != nil {
|
Fatalf("%v", err)
|
||||||
Fatalf("%s: %v\n", backendName, err)
|
}
|
||||||
|
fmt.Printf("---> Loading backend '%s'\n", strings.Join(append([]string{bName}, bArgs...), " "))
|
||||||
|
if err := back.Job(bName, bArgs...).Run(); err != nil {
|
||||||
|
Fatalf("%s: %v\n", bName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register the API entrypoint
|
// Register the API entrypoint
|
||||||
|
@ -75,6 +80,28 @@ func cmdDaemon(c *cli.Context) {
|
||||||
<-make(chan struct{})
|
<-make(chan struct{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func parseCmd(txt string) (string, []string, error) {
|
||||||
|
l, err := shlex.NewLexer(strings.NewReader(txt))
|
||||||
|
if err != nil {
|
||||||
|
return "", nil, err
|
||||||
|
}
|
||||||
|
var cmd []string
|
||||||
|
for {
|
||||||
|
word, err := l.NextWord()
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return "", nil, err
|
||||||
|
}
|
||||||
|
cmd = append(cmd, word)
|
||||||
|
}
|
||||||
|
if len(cmd) == 0 {
|
||||||
|
return "", nil, fmt.Errorf("parse error: empty command")
|
||||||
|
}
|
||||||
|
return cmd[0], cmd[1:], nil
|
||||||
|
}
|
||||||
|
|
||||||
func Fatalf(msg string, args ...interface{}) {
|
func Fatalf(msg string, args ...interface{}) {
|
||||||
if !strings.HasSuffix(msg, "\n") {
|
if !strings.HasSuffix(msg, "\n") {
|
||||||
msg = msg + "\n"
|
msg = msg + "\n"
|
||||||
|
|
Loading…
Reference in New Issue