summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorVictor Vieux <victor.vieux@docker.com>2014-01-21 15:06:23 -0800
committerVictor Vieux <victor.vieux@docker.com>2014-01-21 15:06:23 -0800
commite3461bc8d694fa4b104a9cdd08e11de26a04d923 (patch)
tree470b53b1f2df829da9db4b8d153f2d397a1fdd90 /engine
parent62c456398767b3e8155ec6d0df265cb5fb464438 (diff)
downloaddocker-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.go26
-rw-r--r--engine/streams.go16
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 {