From d5f5ecb658c7a6a0f04939061494c9d404d393ce Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Fri, 13 Dec 2013 15:01:54 -0800 Subject: [PATCH] improve GetenvJson --- engine/env.go | 7 ++----- engine/job.go | 4 ++-- server.go | 10 +++++----- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/engine/env.go b/engine/env.go index 588cdeab2..81c76d5ad 100644 --- a/engine/env.go +++ b/engine/env.go @@ -77,15 +77,12 @@ func (env *Env) GetList(key string) []string { return l } -func (env *Env) GetJson(key string) interface{} { +func (env *Env) GetJson(key string, iface interface{}) error { sval := env.Get(key) if sval == "" { return nil } - var m interface{} - //Discard error on purpose - json.Unmarshal([]byte(sval), &m) - return m + return json.Unmarshal([]byte(sval), iface) } func (env *Env) SetJson(key string, value interface{}) error { diff --git a/engine/job.go b/engine/job.go index c7b510d47..e960cffda 100644 --- a/engine/job.go +++ b/engine/job.go @@ -126,8 +126,8 @@ func (job *Job) GetenvList(key string) []string { return job.env.GetList(key) } -func (job *Job) GetenvJson(key string) interface{} { - return job.env.GetJson(key) +func (job *Job) GetenvJson(key string, iface interface{}) error { + return job.env.GetJson(key, iface) } func (job *Job) SetenvJson(key string, value interface{}) error { diff --git a/server.go b/server.go index e7bb73d4e..ee1ca939e 100644 --- a/server.go +++ b/server.go @@ -785,13 +785,13 @@ func (srv *Server) ContainerCommit(job *engine.Job) engine.Status { job.Errorf("No such container: %s", name) return engine.StatusErr } - var config *Config - iConfig, ok := job.GetenvJson("config").(Config) - if ok { - config = &iConfig + var config Config + if err := job.GetenvJson("config", &config); err != nil { + job.Error(err) + return engine.StatusErr } - img, err := srv.runtime.Commit(container, job.Getenv("repo"), job.Getenv("tag"), job.Getenv("comment"), job.Getenv("author"), config) + img, err := srv.runtime.Commit(container, job.Getenv("repo"), job.Getenv("tag"), job.Getenv("comment"), job.Getenv("author"), &config) if err != nil { job.Error(err) return engine.StatusErr