Skip to content

Commit

Permalink
refactor: cmd 处理数组越界
Browse files Browse the repository at this point in the history
  • Loading branch information
WqVoon committed Apr 18, 2022
1 parent bc30fb4 commit 8132028
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 5 deletions.
5 changes: 1 addition & 4 deletions main.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package main

import (
"flag"

"github.com/wqvoon/cbox/pkg"
"github.com/wqvoon/cbox/pkg/cmd"
"github.com/wqvoon/cbox/pkg/runtime"
Expand All @@ -16,6 +14,5 @@ func main() {
runtime.Handle()
}

args := flag.Args()
cmd.Run(args[0], args[1:])
cmd.Run()
}
26 changes: 25 additions & 1 deletion pkg/cmd/cmd.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cmd

import (
"flag"
"time"

"github.com/wqvoon/cbox/pkg/container"
Expand Down Expand Up @@ -31,7 +32,14 @@ func RegisterCmd(name, description string, fn func(args []string)) {
cmdSet.cmds = append(cmdSet.cmds, &Cmd{name, description})
}

func Run(cmdName string, args []string) {
func Run() {
cmdName := "help"

args := flag.Args()
if len(args) > 0 {
cmdName, args = args[0], args[1:]
}

if fn, isIn := cmdSet.name2Fn[cmdName]; isIn {
fn(args)
} else {
Expand Down Expand Up @@ -75,6 +83,10 @@ func init() {
"run",
"create + start,默认运行 entrypoint,命令格式 `cbox run <IMAGE> <CONTAINER> [...args]`",
func(args []string) {
if len(args) < 2 {
log.Errorln("malformed command, run `cbox help` for more info")
}

imageNameTag, containerName := args[0], args[1]
c := container.CreateContainer(
image.GetImage(utils.GetNameTag(imageNameTag)), containerName,
Expand All @@ -88,6 +100,10 @@ func init() {
"create",
"创建容器,命令格式 `cbox create <IMAGE> <CONTAINER>`",
func(args []string) {
if len(args) != 2 {
log.Errorln("malformed command, run `cbox help` for more info")
}

imageNameTag, containerName := args[0], args[1]
container.CreateContainer(
image.GetImage(utils.GetNameTag(imageNameTag)), containerName,
Expand All @@ -105,6 +121,10 @@ func init() {
"exec",
"在容器环境下执行命令, 默认运行 entrypoint,命令格式 `cbox exec <CONTAINER> [...args]`",
func(args []string) {
if len(args) == 0 {
log.Errorln("malformed command, run `cbox help` for more info")
}

name := args[0]
c := container.GetContainerByName(name)
c.Exec(args[1:]...)
Expand Down Expand Up @@ -135,6 +155,10 @@ func init() {
"pull",
"拉取镜像到本地,命令格式 `cbox pull <CONTAINER>`",
func(args []string) {
if len(args) != 1 {
log.Errorln("malformed command, run `cbox help` for more info")
}

image.Pull(utils.GetNameTag(args[0]))
})

Expand Down

0 comments on commit 8132028

Please sign in to comment.