Signed-off-by: Lei Jitang <leijitang@huawei.com>
| ... | ... |
@@ -17,7 +17,7 @@ import ( |
| 17 | 17 |
// |
| 18 | 18 |
// Usage: docker attach [OPTIONS] CONTAINER |
| 19 | 19 |
func (cli *DockerCli) CmdAttach(args ...string) error {
|
| 20 |
- cmd := Cli.Subcmd("attach", []string{"CONTAINER"}, "Attach to a running container", true)
|
|
| 20 |
+ cmd := Cli.Subcmd("attach", []string{"CONTAINER"}, Cli.DockerCommands["attach"].Description, true)
|
|
| 21 | 21 |
noStdin := cmd.Bool([]string{"#nostdin", "-no-stdin"}, false, "Do not attach STDIN")
|
| 22 | 22 |
proxy := cmd.Bool([]string{"#sig-proxy", "-sig-proxy"}, true, "Proxy all received signals to the process")
|
| 23 | 23 |
|
| ... | ... |
@@ -49,7 +49,7 @@ const ( |
| 49 | 49 |
// |
| 50 | 50 |
// Usage: docker build [OPTIONS] PATH | URL | - |
| 51 | 51 |
func (cli *DockerCli) CmdBuild(args ...string) error {
|
| 52 |
- cmd := Cli.Subcmd("build", []string{"PATH | URL | -"}, "Build a new image from the source code at PATH", true)
|
|
| 52 |
+ cmd := Cli.Subcmd("build", []string{"PATH | URL | -"}, Cli.DockerCommands["build"].Description, true)
|
|
| 53 | 53 |
tag := cmd.String([]string{"t", "-tag"}, "", "Repository name (and optionally a tag) for the image")
|
| 54 | 54 |
suppressOutput := cmd.Bool([]string{"q", "-quiet"}, false, "Suppress the verbose output generated by the containers")
|
| 55 | 55 |
noCache := cmd.Bool([]string{"#no-cache", "-no-cache"}, false, "Do not use cache when building the image")
|
| ... | ... |
@@ -18,7 +18,7 @@ import ( |
| 18 | 18 |
// |
| 19 | 19 |
// Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] |
| 20 | 20 |
func (cli *DockerCli) CmdCommit(args ...string) error {
|
| 21 |
- cmd := Cli.Subcmd("commit", []string{"CONTAINER [REPOSITORY[:TAG]]"}, "Create a new image from a container's changes", true)
|
|
| 21 |
+ cmd := Cli.Subcmd("commit", []string{"CONTAINER [REPOSITORY[:TAG]]"}, Cli.DockerCommands["commit"].Description, true)
|
|
| 22 | 22 |
flPause := cmd.Bool([]string{"p", "-pause"}, true, "Pause container during commit")
|
| 23 | 23 |
flComment := cmd.String([]string{"m", "-message"}, "", "Commit message")
|
| 24 | 24 |
flAuthor := cmd.String([]string{"a", "#author", "-author"}, "", "Author (e.g., \"John Hannibal Smith <hannibal@a-team.com>\")")
|
| ... | ... |
@@ -43,8 +43,8 @@ func (cli *DockerCli) CmdCp(args ...string) error {
|
| 43 | 43 |
"cp", |
| 44 | 44 |
[]string{"CONTAINER:PATH LOCALPATH|-", "LOCALPATH|- CONTAINER:PATH"},
|
| 45 | 45 |
strings.Join([]string{
|
| 46 |
- "Copy files/folders between a container and your host.\n", |
|
| 47 |
- "Use '-' as the source to read a tar archive from stdin\n", |
|
| 46 |
+ Cli.DockerCommands["cp"].Description, |
|
| 47 |
+ "\nUse '-' as the source to read a tar archive from stdin\n", |
|
| 48 | 48 |
"and extract it to a directory destination in a container.\n", |
| 49 | 49 |
"Use '-' as the destination to stream a tar archive of a\n", |
| 50 | 50 |
"container source to stdout.", |
| ... | ... |
@@ -159,7 +159,7 @@ func (cli *DockerCli) createContainer(config *runconfig.Config, hostConfig *runc |
| 159 | 159 |
// |
| 160 | 160 |
// Usage: docker create [OPTIONS] IMAGE [COMMAND] [ARG...] |
| 161 | 161 |
func (cli *DockerCli) CmdCreate(args ...string) error {
|
| 162 |
- cmd := Cli.Subcmd("create", []string{"IMAGE [COMMAND] [ARG...]"}, "Create a new container", true)
|
|
| 162 |
+ cmd := Cli.Subcmd("create", []string{"IMAGE [COMMAND] [ARG...]"}, Cli.DockerCommands["create"].Description, true)
|
|
| 163 | 163 |
addTrustedFlags(cmd, true) |
| 164 | 164 |
|
| 165 | 165 |
// These are flags not stored in Config/HostConfig |
| ... | ... |
@@ -18,7 +18,7 @@ import ( |
| 18 | 18 |
// |
| 19 | 19 |
// Usage: docker diff CONTAINER |
| 20 | 20 |
func (cli *DockerCli) CmdDiff(args ...string) error {
|
| 21 |
- cmd := Cli.Subcmd("diff", []string{"CONTAINER"}, "Inspect changes on a container's filesystem", true)
|
|
| 21 |
+ cmd := Cli.Subcmd("diff", []string{"CONTAINER"}, Cli.DockerCommands["diff"].Description, true)
|
|
| 22 | 22 |
cmd.Require(flag.Exact, 1) |
| 23 | 23 |
|
| 24 | 24 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -15,7 +15,7 @@ import ( |
| 15 | 15 |
// |
| 16 | 16 |
// Usage: docker events [OPTIONS] |
| 17 | 17 |
func (cli *DockerCli) CmdEvents(args ...string) error {
|
| 18 |
- cmd := Cli.Subcmd("events", nil, "Get real time events from the server", true)
|
|
| 18 |
+ cmd := Cli.Subcmd("events", nil, Cli.DockerCommands["events"].Description, true)
|
|
| 19 | 19 |
since := cmd.String([]string{"#since", "-since"}, "", "Show all events created since timestamp")
|
| 20 | 20 |
until := cmd.String([]string{"-until"}, "", "Stream events until this timestamp")
|
| 21 | 21 |
flFilter := opts.NewListOpts(nil) |
| ... | ... |
@@ -16,7 +16,7 @@ import ( |
| 16 | 16 |
// |
| 17 | 17 |
// Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] |
| 18 | 18 |
func (cli *DockerCli) CmdExec(args ...string) error {
|
| 19 |
- cmd := Cli.Subcmd("exec", []string{"CONTAINER COMMAND [ARG...]"}, "Run a command in a running container", true)
|
|
| 19 |
+ cmd := Cli.Subcmd("exec", []string{"CONTAINER COMMAND [ARG...]"}, Cli.DockerCommands["exec"].Description, true)
|
|
| 20 | 20 |
|
| 21 | 21 |
execConfig, err := runconfig.ParseExec(cmd, args) |
| 22 | 22 |
// just in case the ParseExec does not exit |
| ... | ... |
@@ -14,7 +14,7 @@ import ( |
| 14 | 14 |
// |
| 15 | 15 |
// Usage: docker export [OPTIONS] CONTAINER |
| 16 | 16 |
func (cli *DockerCli) CmdExport(args ...string) error {
|
| 17 |
- cmd := Cli.Subcmd("export", []string{"CONTAINER"}, "Export the contents of a container's filesystem as a tar archive", true)
|
|
| 17 |
+ cmd := Cli.Subcmd("export", []string{"CONTAINER"}, Cli.DockerCommands["export"].Description, true)
|
|
| 18 | 18 |
outfile := cmd.String([]string{"o", "-output"}, "", "Write to a file, instead of STDOUT")
|
| 19 | 19 |
cmd.Require(flag.Exact, 1) |
| 20 | 20 |
|
| ... | ... |
@@ -19,7 +19,7 @@ import ( |
| 19 | 19 |
// |
| 20 | 20 |
// Usage: docker history [OPTIONS] IMAGE |
| 21 | 21 |
func (cli *DockerCli) CmdHistory(args ...string) error {
|
| 22 |
- cmd := Cli.Subcmd("history", []string{"IMAGE"}, "Show the history of an image", true)
|
|
| 22 |
+ cmd := Cli.Subcmd("history", []string{"IMAGE"}, Cli.DockerCommands["history"].Description, true)
|
|
| 23 | 23 |
human := cmd.Bool([]string{"H", "-human"}, true, "Print sizes and dates in human readable format")
|
| 24 | 24 |
quiet := cmd.Bool([]string{"q", "-quiet"}, false, "Only show numeric IDs")
|
| 25 | 25 |
noTrunc := cmd.Bool([]string{"#notrunc", "-no-trunc"}, false, "Don't truncate output")
|
| ... | ... |
@@ -22,7 +22,7 @@ import ( |
| 22 | 22 |
// |
| 23 | 23 |
// Usage: docker images [OPTIONS] [REPOSITORY] |
| 24 | 24 |
func (cli *DockerCli) CmdImages(args ...string) error {
|
| 25 |
- cmd := Cli.Subcmd("images", []string{"[REPOSITORY[:TAG]]"}, "List images", true)
|
|
| 25 |
+ cmd := Cli.Subcmd("images", []string{"[REPOSITORY[:TAG]]"}, Cli.DockerCommands["images"].Description, true)
|
|
| 26 | 26 |
quiet := cmd.Bool([]string{"q", "-quiet"}, false, "Only show numeric IDs")
|
| 27 | 27 |
all := cmd.Bool([]string{"a", "-all"}, false, "Show all images (default hides intermediate images)")
|
| 28 | 28 |
noTrunc := cmd.Bool([]string{"#notrunc", "-no-trunc"}, false, "Don't truncate output")
|
| ... | ... |
@@ -20,7 +20,7 @@ import ( |
| 20 | 20 |
// |
| 21 | 21 |
// Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] |
| 22 | 22 |
func (cli *DockerCli) CmdImport(args ...string) error {
|
| 23 |
- cmd := Cli.Subcmd("import", []string{"file|URL|- [REPOSITORY[:TAG]]"}, "Create an empty filesystem image and import the contents of the\ntarball (.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz) into it, then\noptionally tag it.", true)
|
|
| 23 |
+ cmd := Cli.Subcmd("import", []string{"file|URL|- [REPOSITORY[:TAG]]"}, Cli.DockerCommands["import"].Description, true)
|
|
| 24 | 24 |
flChanges := opts.NewListOpts(nil) |
| 25 | 25 |
cmd.Var(&flChanges, []string{"c", "-change"}, "Apply Dockerfile instruction to the created image")
|
| 26 | 26 |
message := cmd.String([]string{"m", "-message"}, "", "Set commit message for imported image")
|
| ... | ... |
@@ -16,7 +16,7 @@ import ( |
| 16 | 16 |
// |
| 17 | 17 |
// Usage: docker info |
| 18 | 18 |
func (cli *DockerCli) CmdInfo(args ...string) error {
|
| 19 |
- cmd := Cli.Subcmd("info", nil, "Display system-wide information", true)
|
|
| 19 |
+ cmd := Cli.Subcmd("info", nil, Cli.DockerCommands["info"].Description, true)
|
|
| 20 | 20 |
cmd.Require(flag.Exact, 0) |
| 21 | 21 |
|
| 22 | 22 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -24,7 +24,7 @@ var funcMap = template.FuncMap{
|
| 24 | 24 |
// |
| 25 | 25 |
// Usage: docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...] |
| 26 | 26 |
func (cli *DockerCli) CmdInspect(args ...string) error {
|
| 27 |
- cmd := Cli.Subcmd("inspect", []string{"CONTAINER|IMAGE [CONTAINER|IMAGE...]"}, "Return low-level information on a container or image", true)
|
|
| 27 |
+ cmd := Cli.Subcmd("inspect", []string{"CONTAINER|IMAGE [CONTAINER|IMAGE...]"}, Cli.DockerCommands["inspect"].Description, true)
|
|
| 28 | 28 |
tmplStr := cmd.String([]string{"f", "#format", "-format"}, "", "Format the output using the given go template")
|
| 29 | 29 |
inspectType := cmd.String([]string{"-type"}, "", "Return JSON for specified type, (e.g image or container)")
|
| 30 | 30 |
cmd.Require(flag.Min, 1) |
| ... | ... |
@@ -11,7 +11,7 @@ import ( |
| 11 | 11 |
// |
| 12 | 12 |
// Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...] |
| 13 | 13 |
func (cli *DockerCli) CmdKill(args ...string) error {
|
| 14 |
- cmd := Cli.Subcmd("kill", []string{"CONTAINER [CONTAINER...]"}, "Kill a running container using SIGKILL or a specified signal", true)
|
|
| 14 |
+ cmd := Cli.Subcmd("kill", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["kill"].Description, true)
|
|
| 15 | 15 |
signal := cmd.String([]string{"s", "-signal"}, "KILL", "Signal to send to the container")
|
| 16 | 16 |
cmd.Require(flag.Min, 1) |
| 17 | 17 |
|
| ... | ... |
@@ -14,7 +14,7 @@ import ( |
| 14 | 14 |
// |
| 15 | 15 |
// Usage: docker load [OPTIONS] |
| 16 | 16 |
func (cli *DockerCli) CmdLoad(args ...string) error {
|
| 17 |
- cmd := Cli.Subcmd("load", nil, "Load an image from a tar archive or STDIN", true)
|
|
| 17 |
+ cmd := Cli.Subcmd("load", nil, Cli.DockerCommands["load"].Description, true)
|
|
| 18 | 18 |
infile := cmd.String([]string{"i", "-input"}, "", "Read from a tar archive file, instead of STDIN")
|
| 19 | 19 |
cmd.Require(flag.Exact, 0) |
| 20 | 20 |
|
| ... | ... |
@@ -22,7 +22,7 @@ import ( |
| 22 | 22 |
// |
| 23 | 23 |
// Usage: docker login SERVER |
| 24 | 24 |
func (cli *DockerCli) CmdLogin(args ...string) error {
|
| 25 |
- cmd := Cli.Subcmd("login", []string{"[SERVER]"}, "Register or log in to a Docker registry server, if no server is\nspecified \""+registry.IndexServer+"\" is the default.", true)
|
|
| 25 |
+ cmd := Cli.Subcmd("login", []string{"[SERVER]"}, Cli.DockerCommands["login"].Description+".\nIf no server is specified \""+registry.IndexServer+"\" is the default.", true)
|
|
| 26 | 26 |
cmd.Require(flag.Max, 1) |
| 27 | 27 |
|
| 28 | 28 |
var username, password, email string |
| ... | ... |
@@ -14,7 +14,7 @@ import ( |
| 14 | 14 |
// |
| 15 | 15 |
// Usage: docker logout [SERVER] |
| 16 | 16 |
func (cli *DockerCli) CmdLogout(args ...string) error {
|
| 17 |
- cmd := Cli.Subcmd("logout", []string{"[SERVER]"}, "Log out from a Docker registry, if no server is\nspecified \""+registry.IndexServer+"\" is the default.", true)
|
|
| 17 |
+ cmd := Cli.Subcmd("logout", []string{"[SERVER]"}, Cli.DockerCommands["logout"].Description+".\nIf no server is specified \""+registry.IndexServer+"\" is the default.", true)
|
|
| 18 | 18 |
cmd.Require(flag.Max, 1) |
| 19 | 19 |
|
| 20 | 20 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -15,7 +15,7 @@ import ( |
| 15 | 15 |
// |
| 16 | 16 |
// docker logs [OPTIONS] CONTAINER |
| 17 | 17 |
func (cli *DockerCli) CmdLogs(args ...string) error {
|
| 18 |
- cmd := Cli.Subcmd("logs", []string{"CONTAINER"}, "Fetch the logs of a container", true)
|
|
| 18 |
+ cmd := Cli.Subcmd("logs", []string{"CONTAINER"}, Cli.DockerCommands["logs"].Description, true)
|
|
| 19 | 19 |
follow := cmd.Bool([]string{"f", "-follow"}, false, "Follow log output")
|
| 20 | 20 |
since := cmd.String([]string{"-since"}, "", "Show logs since timestamp")
|
| 21 | 21 |
times := cmd.Bool([]string{"t", "-timestamps"}, false, "Show timestamps")
|
| ... | ... |
@@ -11,7 +11,7 @@ import ( |
| 11 | 11 |
// |
| 12 | 12 |
// Usage: docker pause CONTAINER [CONTAINER...] |
| 13 | 13 |
func (cli *DockerCli) CmdPause(args ...string) error {
|
| 14 |
- cmd := Cli.Subcmd("pause", []string{"CONTAINER [CONTAINER...]"}, "Pause all processes within a container", true)
|
|
| 14 |
+ cmd := Cli.Subcmd("pause", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["pause"].Description, true)
|
|
| 15 | 15 |
cmd.Require(flag.Min, 1) |
| 16 | 16 |
|
| 17 | 17 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -15,7 +15,7 @@ import ( |
| 15 | 15 |
// |
| 16 | 16 |
// Usage: docker port CONTAINER [PRIVATE_PORT[/PROTO]] |
| 17 | 17 |
func (cli *DockerCli) CmdPort(args ...string) error {
|
| 18 |
- cmd := Cli.Subcmd("port", []string{"CONTAINER [PRIVATE_PORT[/PROTO]]"}, "List port mappings for the CONTAINER, or lookup the public-facing port that\nis NAT-ed to the PRIVATE_PORT", true)
|
|
| 18 |
+ cmd := Cli.Subcmd("port", []string{"CONTAINER [PRIVATE_PORT[/PROTO]]"}, Cli.DockerCommands["port"].Description, true)
|
|
| 19 | 19 |
cmd.Require(flag.Min, 1) |
| 20 | 20 |
|
| 21 | 21 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -23,7 +23,7 @@ func (cli *DockerCli) CmdPs(args ...string) error {
|
| 23 | 23 |
psFilterArgs = filters.Args{}
|
| 24 | 24 |
v = url.Values{}
|
| 25 | 25 |
|
| 26 |
- cmd = Cli.Subcmd("ps", nil, "List containers", true)
|
|
| 26 |
+ cmd = Cli.Subcmd("ps", nil, Cli.DockerCommands["ps"].Description, true)
|
|
| 27 | 27 |
quiet = cmd.Bool([]string{"q", "-quiet"}, false, "Only display numeric IDs")
|
| 28 | 28 |
size = cmd.Bool([]string{"s", "-size"}, false, "Display total file sizes")
|
| 29 | 29 |
all = cmd.Bool([]string{"a", "-all"}, false, "Show all containers (default shows just running)")
|
| ... | ... |
@@ -15,7 +15,7 @@ import ( |
| 15 | 15 |
// |
| 16 | 16 |
// Usage: docker pull [OPTIONS] IMAGENAME[:TAG|@DIGEST] |
| 17 | 17 |
func (cli *DockerCli) CmdPull(args ...string) error {
|
| 18 |
- cmd := Cli.Subcmd("pull", []string{"NAME[:TAG|@DIGEST]"}, "Pull an image or a repository from a registry", true)
|
|
| 18 |
+ cmd := Cli.Subcmd("pull", []string{"NAME[:TAG|@DIGEST]"}, Cli.DockerCommands["pull"].Description, true)
|
|
| 19 | 19 |
allTags := cmd.Bool([]string{"a", "-all-tags"}, false, "Download all tagged images in the repository")
|
| 20 | 20 |
addTrustedFlags(cmd, true) |
| 21 | 21 |
cmd.Require(flag.Exact, 1) |
| ... | ... |
@@ -14,7 +14,7 @@ import ( |
| 14 | 14 |
// |
| 15 | 15 |
// Usage: docker push NAME[:TAG] |
| 16 | 16 |
func (cli *DockerCli) CmdPush(args ...string) error {
|
| 17 |
- cmd := Cli.Subcmd("push", []string{"NAME[:TAG]"}, "Push an image or a repository to a registry", true)
|
|
| 17 |
+ cmd := Cli.Subcmd("push", []string{"NAME[:TAG]"}, Cli.DockerCommands["push"].Description, true)
|
|
| 18 | 18 |
addTrustedFlags(cmd, false) |
| 19 | 19 |
cmd.Require(flag.Exact, 1) |
| 20 | 20 |
|
| ... | ... |
@@ -12,7 +12,7 @@ import ( |
| 12 | 12 |
// |
| 13 | 13 |
// Usage: docker rename OLD_NAME NEW_NAME |
| 14 | 14 |
func (cli *DockerCli) CmdRename(args ...string) error {
|
| 15 |
- cmd := Cli.Subcmd("rename", []string{"OLD_NAME NEW_NAME"}, "Rename a container", true)
|
|
| 15 |
+ cmd := Cli.Subcmd("rename", []string{"OLD_NAME NEW_NAME"}, Cli.DockerCommands["rename"].Description, true)
|
|
| 16 | 16 |
cmd.Require(flag.Exact, 2) |
| 17 | 17 |
|
| 18 | 18 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -13,7 +13,7 @@ import ( |
| 13 | 13 |
// |
| 14 | 14 |
// Usage: docker restart [OPTIONS] CONTAINER [CONTAINER...] |
| 15 | 15 |
func (cli *DockerCli) CmdRestart(args ...string) error {
|
| 16 |
- cmd := Cli.Subcmd("restart", []string{"CONTAINER [CONTAINER...]"}, "Restart a container", true)
|
|
| 16 |
+ cmd := Cli.Subcmd("restart", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["restart"].Description, true)
|
|
| 17 | 17 |
nSeconds := cmd.Int([]string{"t", "-time"}, 10, "Seconds to wait for stop before killing the container")
|
| 18 | 18 |
cmd.Require(flag.Min, 1) |
| 19 | 19 |
|
| ... | ... |
@@ -13,7 +13,7 @@ import ( |
| 13 | 13 |
// |
| 14 | 14 |
// Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...] |
| 15 | 15 |
func (cli *DockerCli) CmdRm(args ...string) error {
|
| 16 |
- cmd := Cli.Subcmd("rm", []string{"CONTAINER [CONTAINER...]"}, "Remove one or more containers", true)
|
|
| 16 |
+ cmd := Cli.Subcmd("rm", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["rm"].Description, true)
|
|
| 17 | 17 |
v := cmd.Bool([]string{"v", "-volumes"}, false, "Remove the volumes associated with the container")
|
| 18 | 18 |
link := cmd.Bool([]string{"l", "#link", "-link"}, false, "Remove the specified link")
|
| 19 | 19 |
force := cmd.Bool([]string{"f", "-force"}, false, "Force the removal of a running container (uses SIGKILL)")
|
| ... | ... |
@@ -14,7 +14,7 @@ import ( |
| 14 | 14 |
// |
| 15 | 15 |
// Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] |
| 16 | 16 |
func (cli *DockerCli) CmdRmi(args ...string) error {
|
| 17 |
- cmd := Cli.Subcmd("rmi", []string{"IMAGE [IMAGE...]"}, "Remove one or more images", true)
|
|
| 17 |
+ cmd := Cli.Subcmd("rmi", []string{"IMAGE [IMAGE...]"}, Cli.DockerCommands["rmi"].Description, true)
|
|
| 18 | 18 |
force := cmd.Bool([]string{"f", "-force"}, false, "Force removal of the image")
|
| 19 | 19 |
noprune := cmd.Bool([]string{"-no-prune"}, false, "Do not delete untagged parents")
|
| 20 | 20 |
cmd.Require(flag.Min, 1) |
| ... | ... |
@@ -40,7 +40,7 @@ func (cid *cidFile) Write(id string) error {
|
| 40 | 40 |
// |
| 41 | 41 |
// Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] |
| 42 | 42 |
func (cli *DockerCli) CmdRun(args ...string) error {
|
| 43 |
- cmd := Cli.Subcmd("run", []string{"IMAGE [COMMAND] [ARG...]"}, "Run a command in a new container", true)
|
|
| 43 |
+ cmd := Cli.Subcmd("run", []string{"IMAGE [COMMAND] [ARG...]"}, Cli.DockerCommands["run"].Description, true)
|
|
| 44 | 44 |
addTrustedFlags(cmd, true) |
| 45 | 45 |
|
| 46 | 46 |
// These are flags not stored in Config/HostConfig |
| ... | ... |
@@ -15,7 +15,7 @@ import ( |
| 15 | 15 |
// |
| 16 | 16 |
// Usage: docker save [OPTIONS] IMAGE [IMAGE...] |
| 17 | 17 |
func (cli *DockerCli) CmdSave(args ...string) error {
|
| 18 |
- cmd := Cli.Subcmd("save", []string{"IMAGE [IMAGE...]"}, "Save an image(s) to a tar archive (streamed to STDOUT by default)", true)
|
|
| 18 |
+ cmd := Cli.Subcmd("save", []string{"IMAGE [IMAGE...]"}, Cli.DockerCommands["save"].Description+" (streamed to STDOUT by default)", true)
|
|
| 19 | 19 |
outfile := cmd.String([]string{"o", "-output"}, "", "Write to a file, instead of STDOUT")
|
| 20 | 20 |
cmd.Require(flag.Min, 1) |
| 21 | 21 |
|
| ... | ... |
@@ -26,7 +26,7 @@ func (r ByStars) Less(i, j int) bool { return r[i].StarCount < r[j].StarCount }
|
| 26 | 26 |
// |
| 27 | 27 |
// Usage: docker search [OPTIONS] TERM |
| 28 | 28 |
func (cli *DockerCli) CmdSearch(args ...string) error {
|
| 29 |
- cmd := Cli.Subcmd("search", []string{"TERM"}, "Search the Docker Hub for images", true)
|
|
| 29 |
+ cmd := Cli.Subcmd("search", []string{"TERM"}, Cli.DockerCommands["search"].Description, true)
|
|
| 30 | 30 |
noTrunc := cmd.Bool([]string{"#notrunc", "-no-trunc"}, false, "Don't truncate output")
|
| 31 | 31 |
trusted := cmd.Bool([]string{"#t", "#trusted", "#-trusted"}, false, "Only show trusted builds")
|
| 32 | 32 |
automated := cmd.Bool([]string{"-automated"}, false, "Only show automated builds")
|
| ... | ... |
@@ -45,7 +45,7 @@ func (cli *DockerCli) forwardAllSignals(cid string) chan os.Signal {
|
| 45 | 45 |
// |
| 46 | 46 |
// Usage: docker start [OPTIONS] CONTAINER [CONTAINER...] |
| 47 | 47 |
func (cli *DockerCli) CmdStart(args ...string) error {
|
| 48 |
- cmd := Cli.Subcmd("start", []string{"CONTAINER [CONTAINER...]"}, "Start one or more containers", true)
|
|
| 48 |
+ cmd := Cli.Subcmd("start", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["start"].Description, true)
|
|
| 49 | 49 |
attach := cmd.Bool([]string{"a", "-attach"}, false, "Attach STDOUT/STDERR and forward signals")
|
| 50 | 50 |
openStdin := cmd.Bool([]string{"i", "-interactive"}, false, "Attach container's STDIN")
|
| 51 | 51 |
cmd.Require(flag.Min, 1) |
| ... | ... |
@@ -141,7 +141,7 @@ func (s *containerStats) Display(w io.Writer) error {
|
| 141 | 141 |
// |
| 142 | 142 |
// Usage: docker stats CONTAINER [CONTAINER...] |
| 143 | 143 |
func (cli *DockerCli) CmdStats(args ...string) error {
|
| 144 |
- cmd := Cli.Subcmd("stats", []string{"CONTAINER [CONTAINER...]"}, "Display a live stream of one or more containers' resource usage statistics", true)
|
|
| 144 |
+ cmd := Cli.Subcmd("stats", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["stats"].Description, true)
|
|
| 145 | 145 |
noStream := cmd.Bool([]string{"-no-stream"}, false, "Disable streaming stats and only pull the first result")
|
| 146 | 146 |
cmd.Require(flag.Min, 1) |
| 147 | 147 |
|
| ... | ... |
@@ -15,7 +15,7 @@ import ( |
| 15 | 15 |
// |
| 16 | 16 |
// Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...] |
| 17 | 17 |
func (cli *DockerCli) CmdStop(args ...string) error {
|
| 18 |
- cmd := Cli.Subcmd("stop", []string{"CONTAINER [CONTAINER...]"}, "Stop a container by sending SIGTERM and then SIGKILL after a\ngrace period", true)
|
|
| 18 |
+ cmd := Cli.Subcmd("stop", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["stop"].Description+".\nSending SIGTERM and then SIGKILL after a grace period", true)
|
|
| 19 | 19 |
nSeconds := cmd.Int([]string{"t", "-time"}, 10, "Seconds to wait for stop before killing it")
|
| 20 | 20 |
cmd.Require(flag.Min, 1) |
| 21 | 21 |
|
| ... | ... |
@@ -13,7 +13,7 @@ import ( |
| 13 | 13 |
// |
| 14 | 14 |
// Usage: docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] |
| 15 | 15 |
func (cli *DockerCli) CmdTag(args ...string) error {
|
| 16 |
- cmd := Cli.Subcmd("tag", []string{"IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]"}, "Tag an image into a repository", true)
|
|
| 16 |
+ cmd := Cli.Subcmd("tag", []string{"IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]"}, Cli.DockerCommands["tag"].Description, true)
|
|
| 17 | 17 |
force := cmd.Bool([]string{"f", "#force", "-force"}, false, "Force")
|
| 18 | 18 |
cmd.Require(flag.Exact, 2) |
| 19 | 19 |
|
| ... | ... |
@@ -16,7 +16,7 @@ import ( |
| 16 | 16 |
// |
| 17 | 17 |
// Usage: docker top CONTAINER |
| 18 | 18 |
func (cli *DockerCli) CmdTop(args ...string) error {
|
| 19 |
- cmd := Cli.Subcmd("top", []string{"CONTAINER [ps OPTIONS]"}, "Display the running processes of a container", true)
|
|
| 19 |
+ cmd := Cli.Subcmd("top", []string{"CONTAINER [ps OPTIONS]"}, Cli.DockerCommands["top"].Description, true)
|
|
| 20 | 20 |
cmd.Require(flag.Min, 1) |
| 21 | 21 |
|
| 22 | 22 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -11,7 +11,7 @@ import ( |
| 11 | 11 |
// |
| 12 | 12 |
// Usage: docker unpause CONTAINER [CONTAINER...] |
| 13 | 13 |
func (cli *DockerCli) CmdUnpause(args ...string) error {
|
| 14 |
- cmd := Cli.Subcmd("unpause", []string{"CONTAINER [CONTAINER...]"}, "Unpause all processes within a container", true)
|
|
| 14 |
+ cmd := Cli.Subcmd("unpause", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["unpause"].Description, true)
|
|
| 15 | 15 |
cmd.Require(flag.Min, 1) |
| 16 | 16 |
|
| 17 | 17 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -43,7 +43,7 @@ type versionData struct {
|
| 43 | 43 |
// |
| 44 | 44 |
// Usage: docker version |
| 45 | 45 |
func (cli *DockerCli) CmdVersion(args ...string) (err error) {
|
| 46 |
- cmd := Cli.Subcmd("version", nil, "Show the Docker version information.", true)
|
|
| 46 |
+ cmd := Cli.Subcmd("version", nil, Cli.DockerCommands["version"].Description, true)
|
|
| 47 | 47 |
tmplStr := cmd.String([]string{"f", "#format", "-format"}, "", "Format the output using the given go template")
|
| 48 | 48 |
cmd.Require(flag.Exact, 0) |
| 49 | 49 |
|
| ... | ... |
@@ -20,7 +20,7 @@ import ( |
| 20 | 20 |
// |
| 21 | 21 |
// Usage: docker volume <COMMAND> <OPTS> |
| 22 | 22 |
func (cli *DockerCli) CmdVolume(args ...string) error {
|
| 23 |
- description := "Manage Docker volumes\n\nCommands:\n" |
|
| 23 |
+ description := Cli.DockerCommands["volume"].Description + "\n\nCommands:\n" |
|
| 24 | 24 |
commands := [][]string{
|
| 25 | 25 |
{"create", "Create a volume"},
|
| 26 | 26 |
{"inspect", "Return low-level information on a volume"},
|
| ... | ... |
@@ -13,7 +13,7 @@ import ( |
| 13 | 13 |
// |
| 14 | 14 |
// Usage: docker wait CONTAINER [CONTAINER...] |
| 15 | 15 |
func (cli *DockerCli) CmdWait(args ...string) error {
|
| 16 |
- cmd := Cli.Subcmd("wait", []string{"CONTAINER [CONTAINER...]"}, "Block until a container stops, then print its exit code.", true)
|
|
| 16 |
+ cmd := Cli.Subcmd("wait", []string{"CONTAINER [CONTAINER...]"}, Cli.DockerCommands["wait"].Description, true)
|
|
| 17 | 17 |
cmd.Require(flag.Min, 1) |
| 18 | 18 |
|
| 19 | 19 |
cmd.ParseFlags(args, true) |
| ... | ... |
@@ -18,3 +18,61 @@ type CommonFlags struct {
|
| 18 | 18 |
TLSOptions *tlsconfig.Options |
| 19 | 19 |
TrustKey string |
| 20 | 20 |
} |
| 21 |
+ |
|
| 22 |
+// Command is the struct contains command name and description |
|
| 23 |
+type Command struct {
|
|
| 24 |
+ Name string |
|
| 25 |
+ Description string |
|
| 26 |
+} |
|
| 27 |
+ |
|
| 28 |
+var dockerCommands = []Command{
|
|
| 29 |
+ {"attach", "Attach to a running container"},
|
|
| 30 |
+ {"build", "Build an image from a Dockerfile"},
|
|
| 31 |
+ {"commit", "Create a new image from a container's changes"},
|
|
| 32 |
+ {"cp", "Copy files/folders between a container and the local filesystem"},
|
|
| 33 |
+ {"create", "Create a new container"},
|
|
| 34 |
+ {"diff", "Inspect changes on a container's filesystem"},
|
|
| 35 |
+ {"events", "Get real time events from the server"},
|
|
| 36 |
+ {"exec", "Run a command in a running container"},
|
|
| 37 |
+ {"export", "Export a container's filesystem as a tar archive"},
|
|
| 38 |
+ {"history", "Show the history of an image"},
|
|
| 39 |
+ {"images", "List images"},
|
|
| 40 |
+ {"import", "Import the contents from a tarball to create a filesystem image"},
|
|
| 41 |
+ {"info", "Display system-wide information"},
|
|
| 42 |
+ {"inspect", "Return low-level information on a container or image"},
|
|
| 43 |
+ {"kill", "Kill a running container"},
|
|
| 44 |
+ {"load", "Load an image from a tar archive or STDIN"},
|
|
| 45 |
+ {"login", "Register or log in to a Docker registry"},
|
|
| 46 |
+ {"logout", "Log out from a Docker registry"},
|
|
| 47 |
+ {"logs", "Fetch the logs of a container"},
|
|
| 48 |
+ {"pause", "Pause all processes within a container"},
|
|
| 49 |
+ {"port", "List port mappings or a specific mapping for the CONTAINER"},
|
|
| 50 |
+ {"ps", "List containers"},
|
|
| 51 |
+ {"pull", "Pull an image or a repository from a registry"},
|
|
| 52 |
+ {"push", "Push an image or a repository to a registry"},
|
|
| 53 |
+ {"rename", "Rename a container"},
|
|
| 54 |
+ {"restart", "Restart a container"},
|
|
| 55 |
+ {"rm", "Remove one or more containers"},
|
|
| 56 |
+ {"rmi", "Remove one or more images"},
|
|
| 57 |
+ {"run", "Run a command in a new container"},
|
|
| 58 |
+ {"save", "Save an image(s) to a tar archive"},
|
|
| 59 |
+ {"search", "Search the Docker Hub for images"},
|
|
| 60 |
+ {"start", "Start one or more stopped containers"},
|
|
| 61 |
+ {"stats", "Display a live stream of container(s) resource usage statistics"},
|
|
| 62 |
+ {"stop", "Stop a running container"},
|
|
| 63 |
+ {"tag", "Tag an image into a repository"},
|
|
| 64 |
+ {"top", "Display the running processes of a container"},
|
|
| 65 |
+ {"unpause", "Unpause all processes within a container"},
|
|
| 66 |
+ {"version", "Show the Docker version information"},
|
|
| 67 |
+ {"volume", "Manage Docker volumes"},
|
|
| 68 |
+ {"wait", "Block until a container stops, then print its exit code"},
|
|
| 69 |
+} |
|
| 70 |
+ |
|
| 71 |
+// DockerCommands stores all the docker command |
|
| 72 |
+var DockerCommands = make(map[string]Command) |
|
| 73 |
+ |
|
| 74 |
+func init() {
|
|
| 75 |
+ for _, cmd := range dockerCommands {
|
|
| 76 |
+ DockerCommands[cmd.Name] = cmd |
|
| 77 |
+ } |
|
| 78 |
+} |
| ... | ... |
@@ -36,7 +36,7 @@ func main() {
|
| 36 | 36 |
help := "\nCommands:\n" |
| 37 | 37 |
|
| 38 | 38 |
for _, cmd := range dockerCommands {
|
| 39 |
- help += fmt.Sprintf(" %-10.10s%s\n", cmd.name, cmd.description)
|
|
| 39 |
+ help += fmt.Sprintf(" %-10.10s%s\n", cmd.Name, cmd.Description)
|
|
| 40 | 40 |
} |
| 41 | 41 |
|
| 42 | 42 |
help += "\nRun 'docker COMMAND --help' for more information on a command." |
| ... | ... |
@@ -1,64 +1,30 @@ |
| 1 | 1 |
package main |
| 2 | 2 |
|
| 3 |
-import flag "github.com/docker/docker/pkg/mflag" |
|
| 3 |
+import ( |
|
| 4 |
+ "sort" |
|
| 5 |
+ |
|
| 6 |
+ "github.com/docker/docker/cli" |
|
| 7 |
+ flag "github.com/docker/docker/pkg/mflag" |
|
| 8 |
+) |
|
| 4 | 9 |
|
| 5 | 10 |
var ( |
| 6 | 11 |
flHelp = flag.Bool([]string{"h", "-help"}, false, "Print usage")
|
| 7 | 12 |
flVersion = flag.Bool([]string{"v", "-version"}, false, "Print version information and quit")
|
| 8 | 13 |
) |
| 9 | 14 |
|
| 10 |
-type command struct {
|
|
| 11 |
- name string |
|
| 12 |
- description string |
|
| 13 |
-} |
|
| 14 |
- |
|
| 15 |
-type byName []command |
|
| 15 |
+type byName []cli.Command |
|
| 16 | 16 |
|
| 17 | 17 |
func (a byName) Len() int { return len(a) }
|
| 18 | 18 |
func (a byName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
| 19 |
-func (a byName) Less(i, j int) bool { return a[i].name < a[j].name }
|
|
| 19 |
+func (a byName) Less(i, j int) bool { return a[i].Name < a[j].Name }
|
|
| 20 |
+ |
|
| 21 |
+var dockerCommands []cli.Command |
|
| 20 | 22 |
|
| 21 | 23 |
// TODO(tiborvass): do not show 'daemon' on client-only binaries |
| 22 |
-// and deduplicate description in dockerCommands and cli subcommands |
|
| 23 |
-var dockerCommands = []command{
|
|
| 24 |
- {"attach", "Attach to a running container"},
|
|
| 25 |
- {"build", "Build an image from a Dockerfile"},
|
|
| 26 |
- {"commit", "Create a new image from a container's changes"},
|
|
| 27 |
- {"cp", "Copy files/folders between a container and the local filesystem"},
|
|
| 28 |
- {"create", "Create a new container"},
|
|
| 29 |
- {"diff", "Inspect changes on a container's filesystem"},
|
|
| 30 |
- {"events", "Get real time events from the server"},
|
|
| 31 |
- {"exec", "Run a command in a running container"},
|
|
| 32 |
- {"export", "Export a container's filesystem as a tar archive"},
|
|
| 33 |
- {"history", "Show the history of an image"},
|
|
| 34 |
- {"images", "List images"},
|
|
| 35 |
- {"import", "Import the contents from a tarball to create a filesystem image"},
|
|
| 36 |
- {"info", "Display system-wide information"},
|
|
| 37 |
- {"inspect", "Return low-level information on a container or image"},
|
|
| 38 |
- {"kill", "Kill a running container"},
|
|
| 39 |
- {"load", "Load an image from a tar archive or STDIN"},
|
|
| 40 |
- {"login", "Register or log in to a Docker registry"},
|
|
| 41 |
- {"logout", "Log out from a Docker registry"},
|
|
| 42 |
- {"logs", "Fetch the logs of a container"},
|
|
| 43 |
- {"pause", "Pause all processes within a container"},
|
|
| 44 |
- {"port", "List port mappings or a specific mapping for the CONTAINER"},
|
|
| 45 |
- {"ps", "List containers"},
|
|
| 46 |
- {"pull", "Pull an image or a repository from a registry"},
|
|
| 47 |
- {"push", "Push an image or a repository to a registry"},
|
|
| 48 |
- {"rename", "Rename a container"},
|
|
| 49 |
- {"restart", "Restart a container"},
|
|
| 50 |
- {"rm", "Remove one or more containers"},
|
|
| 51 |
- {"rmi", "Remove one or more images"},
|
|
| 52 |
- {"run", "Run a command in a new container"},
|
|
| 53 |
- {"save", "Save an image(s) to a tar archive"},
|
|
| 54 |
- {"search", "Search the Docker Hub for images"},
|
|
| 55 |
- {"start", "Start one or more containers"},
|
|
| 56 |
- {"stats", "Display a live stream of container(s) resource usage statistics"},
|
|
| 57 |
- {"stop", "Stop a container"},
|
|
| 58 |
- {"tag", "Tag an image into a repository"},
|
|
| 59 |
- {"top", "Display the running processes of a container"},
|
|
| 60 |
- {"unpause", "Unpause all processes within a container"},
|
|
| 61 |
- {"version", "Show the Docker version information"},
|
|
| 62 |
- {"volume", "Manage Docker volumes"},
|
|
| 63 |
- {"wait", "Block until a container stops, then print its exit code"},
|
|
| 24 |
+ |
|
| 25 |
+func init() {
|
|
| 26 |
+ for _, cmd := range cli.DockerCommands {
|
|
| 27 |
+ dockerCommands = append(dockerCommands, cmd) |
|
| 28 |
+ } |
|
| 29 |
+ sort.Sort(byName(dockerCommands)) |
|
| 64 | 30 |
} |
| ... | ... |
@@ -2,10 +2,14 @@ |
| 2 | 2 |
|
| 3 | 3 |
package main |
| 4 | 4 |
|
| 5 |
-import "sort" |
|
| 5 |
+import ( |
|
| 6 |
+ "sort" |
|
| 7 |
+ |
|
| 8 |
+ "github.com/docker/docker/cli" |
|
| 9 |
+) |
|
| 6 | 10 |
|
| 7 | 11 |
func init() {
|
| 8 |
- dockerCommands = append(dockerCommands, command{"network", "Network management"})
|
|
| 12 |
+ dockerCommands = append(dockerCommands, cli.Command{Name: "network", Description: "Network management"})
|
|
| 9 | 13 |
|
| 10 | 14 |
//Sorting logic required here to pass Command Sort Test. |
| 11 | 15 |
sort.Sort(byName(dockerCommands)) |