Skip to content

Commit 233cb09

Browse files
committed
code optimization after review
Signed-off-by: Lifubang <lifubang@acmcoder.com>
1 parent 8a4e508 commit 233cb09

5 files changed

Lines changed: 24 additions & 30 deletions

File tree

cli/command/container/kill.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,8 @@ func NewKillCommand(dockerCli command.Cli) *cobra.Command {
2626
Short: "Kill one or more running containers",
2727
Args: cli.RequiresMinArgs(1),
2828
RunE: func(cmd *cobra.Command, args []string) error {
29-
for _, name := range args {
30-
if !cli.CheckContainerName(name) {
31-
return fmt.Errorf("container name %s is invalid", name)
32-
}
29+
if err := cli.CheckContainerNames(args...); err != nil {
30+
return err
3331
}
3432
opts.containers = args
3533
return runKill(dockerCli, &opts)

cli/command/container/rm.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,8 @@ func NewRmCommand(dockerCli command.Cli) *cobra.Command {
2929
Short: "Remove one or more containers",
3030
Args: cli.RequiresMinArgs(1),
3131
RunE: func(cmd *cobra.Command, args []string) error {
32-
for _, name := range args {
33-
if !cli.CheckContainerName(name) {
34-
return fmt.Errorf("container name %s is invalid", name)
35-
}
32+
if err := cli.CheckContainerNames(args...); err != nil {
33+
return err
3634
}
3735
opts.containers = args
3836
return runRm(dockerCli, &opts)

cli/command/container/stop.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,8 @@ func NewStopCommand(dockerCli command.Cli) *cobra.Command {
2828
Short: "Stop one or more running containers",
2929
Args: cli.RequiresMinArgs(1),
3030
RunE: func(cmd *cobra.Command, args []string) error {
31-
for _, name := range args {
32-
if !cli.CheckContainerName(name) {
33-
return fmt.Errorf("container name %s is invalid", name)
34-
}
31+
if err := cli.CheckContainerNames(args...); err != nil {
32+
return err
3533
}
3634
opts.containers = args
3735
opts.timeChanged = cmd.Flags().Changed("time")

cli/names.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
11
package cli
22

33
import (
4+
"fmt"
5+
"regexp"
46
"strings"
5-
6-
"github.com/docker/cli/cli/names"
77
)
88

99
var (
10-
validContainerNamePattern = names.RestrictedNamePattern
10+
validContainerNamePattern = regexp.MustCompile("^[a-zA-Z0-9][a-zA-Z0-9_.-]+$")
1111
)
1212

1313
// CheckContainerName check container's name is valid or not
14-
func CheckContainerName(name string) bool {
15-
if len(name) == 0 {
16-
return false
14+
func CheckContainerName(name string) error {
15+
if !validContainerNamePattern.MatchString(strings.TrimPrefix(name, "/")) {
16+
return fmt.Errorf("container name %s is invalid", name)
17+
}
18+
return nil
19+
}
20+
21+
// CheckContainerNames check containers' name is valid or not
22+
func CheckContainerNames(names ...string) error {
23+
for _, name := range names {
24+
err := CheckContainerName(name)
25+
if err != nil {
26+
return err
27+
}
1728
}
18-
return validContainerNamePattern.MatchString(strings.TrimPrefix(name, "/"))
29+
return nil
1930
}

cli/names/names.go

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)