зеркало из https://github.com/microsoft/docker.git
Use same error handling while unmarshalling args for CMD and ENTRYPOINT
This commit is contained in:
Родитель
c23b15b9d8
Коммит
323c4b5211
39
buildfile.go
39
buildfile.go
|
@ -271,16 +271,30 @@ func (b *buildFile) CmdEnv(args string) error {
|
||||||
return b.commit("", b.config.Cmd, fmt.Sprintf("ENV %s", replacedVar))
|
return b.commit("", b.config.Cmd, fmt.Sprintf("ENV %s", replacedVar))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *buildFile) CmdCmd(args string) error {
|
func (b *buildFile) buildCmdFromJson(args string) []string {
|
||||||
var cmd []string
|
var cmd []string
|
||||||
if err := json.Unmarshal([]byte(args), &cmd); err != nil {
|
if err := json.Unmarshal([]byte(args), &cmd); err != nil {
|
||||||
utils.Debugf("Error unmarshalling: %s, setting cmd to /bin/sh -c", err)
|
utils.Debugf("Error unmarshalling: %s, setting to /bin/sh -c", err)
|
||||||
cmd = []string{"/bin/sh", "-c", args}
|
cmd = []string{"/bin/sh", "-c", args}
|
||||||
}
|
}
|
||||||
if err := b.commit("", cmd, fmt.Sprintf("CMD %v", cmd)); err != nil {
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *buildFile) CmdCmd(args string) error {
|
||||||
|
cmd := b.buildCmdFromJson(args)
|
||||||
|
b.config.Cmd = cmd
|
||||||
|
if err := b.commit("", b.config.Cmd, fmt.Sprintf("CMD %v", cmd)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *buildFile) CmdEntrypoint(args string) error {
|
||||||
|
entrypoint := b.buildCmdFromJson(args)
|
||||||
|
b.config.Entrypoint = entrypoint
|
||||||
|
if err := b.commit("", b.config.Cmd, fmt.Sprintf("ENTRYPOINT %v", entrypoint)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
b.config.Cmd = cmd
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,23 +317,6 @@ func (b *buildFile) CmdCopy(args string) error {
|
||||||
return fmt.Errorf("COPY has been deprecated. Please use ADD instead")
|
return fmt.Errorf("COPY has been deprecated. Please use ADD instead")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *buildFile) CmdEntrypoint(args string) error {
|
|
||||||
if args == "" {
|
|
||||||
return fmt.Errorf("Entrypoint cannot be empty")
|
|
||||||
}
|
|
||||||
|
|
||||||
var entrypoint []string
|
|
||||||
if err := json.Unmarshal([]byte(args), &entrypoint); err != nil {
|
|
||||||
b.config.Entrypoint = []string{"/bin/sh", "-c", args}
|
|
||||||
} else {
|
|
||||||
b.config.Entrypoint = entrypoint
|
|
||||||
}
|
|
||||||
if err := b.commit("", b.config.Cmd, fmt.Sprintf("ENTRYPOINT %s", args)); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (b *buildFile) CmdWorkdir(workdir string) error {
|
func (b *buildFile) CmdWorkdir(workdir string) error {
|
||||||
b.config.WorkingDir = workdir
|
b.config.WorkingDir = workdir
|
||||||
return b.commit("", b.config.Cmd, fmt.Sprintf("WORKDIR %v", workdir))
|
return b.commit("", b.config.Cmd, fmt.Sprintf("WORKDIR %v", workdir))
|
||||||
|
|
|
@ -391,6 +391,8 @@ func TestBuildEntrypoint(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if img.Config.Entrypoint[0] != "/bin/echo" {
|
if img.Config.Entrypoint[0] != "/bin/echo" {
|
||||||
|
t.Log(img.Config.Entrypoint[0])
|
||||||
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче