mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Move ParseExec to the client where it is used.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
parent
0fae65e228
commit
4c0d586bd3
5 changed files with 46 additions and 52 deletions
|
@ -7,8 +7,8 @@ import (
|
||||||
"github.com/Sirupsen/logrus"
|
"github.com/Sirupsen/logrus"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
Cli "github.com/docker/docker/cli"
|
Cli "github.com/docker/docker/cli"
|
||||||
|
flag "github.com/docker/docker/pkg/mflag"
|
||||||
"github.com/docker/docker/pkg/promise"
|
"github.com/docker/docker/pkg/promise"
|
||||||
"github.com/docker/docker/runconfig"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// CmdExec runs a command in a running container.
|
// CmdExec runs a command in a running container.
|
||||||
|
@ -18,7 +18,7 @@ func (cli *DockerCli) CmdExec(args ...string) error {
|
||||||
cmd := Cli.Subcmd("exec", []string{"CONTAINER COMMAND [ARG...]"}, Cli.DockerCommands["exec"].Description, true)
|
cmd := Cli.Subcmd("exec", []string{"CONTAINER COMMAND [ARG...]"}, Cli.DockerCommands["exec"].Description, true)
|
||||||
detachKeys := cmd.String([]string{"-detach-keys"}, "", "Override the key sequence for detaching a container")
|
detachKeys := cmd.String([]string{"-detach-keys"}, "", "Override the key sequence for detaching a container")
|
||||||
|
|
||||||
execConfig, err := runconfig.ParseExec(cmd, args)
|
execConfig, err := ParseExec(cmd, args)
|
||||||
// just in case the ParseExec does not exit
|
// just in case the ParseExec does not exit
|
||||||
if execConfig.Container == "" || err != nil {
|
if execConfig.Container == "" || err != nil {
|
||||||
return Cli.StatusError{StatusCode: 1}
|
return Cli.StatusError{StatusCode: 1}
|
||||||
|
@ -113,3 +113,46 @@ func (cli *DockerCli) CmdExec(args ...string) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ParseExec parses the specified args for the specified command and generates
|
||||||
|
// an ExecConfig from it.
|
||||||
|
// If the minimal number of specified args is not right or if specified args are
|
||||||
|
// not valid, it will return an error.
|
||||||
|
func ParseExec(cmd *flag.FlagSet, args []string) (*types.ExecConfig, error) {
|
||||||
|
var (
|
||||||
|
flStdin = cmd.Bool([]string{"i", "-interactive"}, false, "Keep STDIN open even if not attached")
|
||||||
|
flTty = cmd.Bool([]string{"t", "-tty"}, false, "Allocate a pseudo-TTY")
|
||||||
|
flDetach = cmd.Bool([]string{"d", "-detach"}, false, "Detached mode: run command in the background")
|
||||||
|
flUser = cmd.String([]string{"u", "-user"}, "", "Username or UID (format: <name|uid>[:<group|gid>])")
|
||||||
|
flPrivileged = cmd.Bool([]string{"-privileged"}, false, "Give extended privileges to the command")
|
||||||
|
execCmd []string
|
||||||
|
container string
|
||||||
|
)
|
||||||
|
cmd.Require(flag.Min, 2)
|
||||||
|
if err := cmd.ParseFlags(args, true); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
container = cmd.Arg(0)
|
||||||
|
parsedArgs := cmd.Args()
|
||||||
|
execCmd = parsedArgs[1:]
|
||||||
|
|
||||||
|
execConfig := &types.ExecConfig{
|
||||||
|
User: *flUser,
|
||||||
|
Privileged: *flPrivileged,
|
||||||
|
Tty: *flTty,
|
||||||
|
Cmd: execCmd,
|
||||||
|
Container: container,
|
||||||
|
Detach: *flDetach,
|
||||||
|
}
|
||||||
|
|
||||||
|
// If -d is not set, attach to everything by default
|
||||||
|
if !*flDetach {
|
||||||
|
execConfig.AttachStdout = true
|
||||||
|
execConfig.AttachStderr = true
|
||||||
|
if *flStdin {
|
||||||
|
execConfig.AttachStdin = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return execConfig, nil
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package runconfig
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
|
@ -1,49 +0,0 @@
|
||||||
package runconfig
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/docker/docker/api/types"
|
|
||||||
flag "github.com/docker/docker/pkg/mflag"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ParseExec parses the specified args for the specified command and generates
|
|
||||||
// an ExecConfig from it.
|
|
||||||
// If the minimal number of specified args is not right or if specified args are
|
|
||||||
// not valid, it will return an error.
|
|
||||||
func ParseExec(cmd *flag.FlagSet, args []string) (*types.ExecConfig, error) {
|
|
||||||
var (
|
|
||||||
flStdin = cmd.Bool([]string{"i", "-interactive"}, false, "Keep STDIN open even if not attached")
|
|
||||||
flTty = cmd.Bool([]string{"t", "-tty"}, false, "Allocate a pseudo-TTY")
|
|
||||||
flDetach = cmd.Bool([]string{"d", "-detach"}, false, "Detached mode: run command in the background")
|
|
||||||
flUser = cmd.String([]string{"u", "-user"}, "", "Username or UID (format: <name|uid>[:<group|gid>])")
|
|
||||||
flPrivileged = cmd.Bool([]string{"-privileged"}, false, "Give extended privileges to the command")
|
|
||||||
execCmd []string
|
|
||||||
container string
|
|
||||||
)
|
|
||||||
cmd.Require(flag.Min, 2)
|
|
||||||
if err := cmd.ParseFlags(args, true); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
container = cmd.Arg(0)
|
|
||||||
parsedArgs := cmd.Args()
|
|
||||||
execCmd = parsedArgs[1:]
|
|
||||||
|
|
||||||
execConfig := &types.ExecConfig{
|
|
||||||
User: *flUser,
|
|
||||||
Privileged: *flPrivileged,
|
|
||||||
Tty: *flTty,
|
|
||||||
Cmd: execCmd,
|
|
||||||
Container: container,
|
|
||||||
Detach: *flDetach,
|
|
||||||
}
|
|
||||||
|
|
||||||
// If -d is not set, attach to everything by default
|
|
||||||
if !*flDetach {
|
|
||||||
execConfig.AttachStdout = true
|
|
||||||
execConfig.AttachStderr = true
|
|
||||||
if *flStdin {
|
|
||||||
execConfig.AttachStdin = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return execConfig, nil
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue