diff options
| author | Victor Vieux <victor.vieux@docker.com> | 2014-01-21 15:06:23 -0800 |
|---|---|---|
| committer | Victor Vieux <victor.vieux@docker.com> | 2014-01-21 15:06:23 -0800 |
| commit | e3461bc8d694fa4b104a9cdd08e11de26a04d923 (patch) | |
| tree | 470b53b1f2df829da9db4b8d153f2d397a1fdd90 /engine | |
| parent | 62c456398767b3e8155ec6d0df265cb5fb464438 (diff) | |
| download | docker-e3461bc8d694fa4b104a9cdd08e11de26a04d923.tar.gz | |
switch back to the valid json format
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/env.go | 26 | ||||
| -rw-r--r-- | engine/streams.go | 16 |
2 files changed, 42 insertions, 0 deletions
diff --git a/engine/env.go b/engine/env.go index 0593bfa012..37ba2ddb4c 100644 --- a/engine/env.go +++ b/engine/env.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "io" + "io/ioutil" "sort" "strconv" "strings" @@ -324,6 +325,31 @@ func (t *Table) WriteTo(dst io.Writer) (n int64, err error) { return n, nil } +func (t *Table) ReadListFrom(src io.Reader) (n int64, err error) { + var array []interface{} + + content, err := ioutil.ReadAll(src) + if err != nil { + return -1, err + } + + if err := json.Unmarshal(content, &array); err != nil { + return -1, err + } + + for _, item := range array { + if m, ok := item.(map[string]interface{}); ok { + env := &Env{} + for key, value := range m { + env.SetAuto(key, value) + } + t.Add(env) + } + } + + return int64(len(content)), nil +} + func (t *Table) ReadFrom(src io.Reader) (n int64, err error) { decoder := NewDecoder(src) for { diff --git a/engine/streams.go b/engine/streams.go index 75b3c768b2..703a56256d 100644 --- a/engine/streams.go +++ b/engine/streams.go @@ -211,6 +211,22 @@ func (o *Output) AddEnv() (dst *Env, err error) { return dst, nil } +func (o *Output) AddListTable() (dst *Table, err error) { + src, err := o.AddPipe() + if err != nil { + return nil, err + } + dst = NewTable("", 0) + o.tasks.Add(1) + go func() { + defer o.tasks.Done() + if _, err := dst.ReadListFrom(src); err != nil { + return + } + }() + return dst, nil +} + func (o *Output) AddTable() (dst *Table, err error) { src, err := o.AddPipe() if err != nil { |
