From f2c28c5fb01e56fd044219d76f133dbdc3034881 Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Wed, 9 Dec 2020 23:06:14 +0200 Subject: [PATCH] #243 Fix bug: show ENV variables Previously only last env variable is shown --- connector/docker.go | 4 +--- cwidgets/single/env.go | 17 ++++++++++------- cwidgets/single/main.go | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/connector/docker.go b/connector/docker.go index 0e30c12..1b76424 100644 --- a/connector/docker.go +++ b/connector/docker.go @@ -175,9 +175,7 @@ func (cm *Docker) refresh(c *container.Container) { c.SetMeta("ports", portsFormat(insp.NetworkSettings.Ports)) c.SetMeta("created", insp.Created.Format("Mon Jan 2 15:04:05 2006")) c.SetMeta("health", insp.State.Health.Status) - for _, env := range insp.Config.Env { - c.SetMeta("[ENV-VAR]", env) - } + c.SetMeta("[ENV-VAR]", strings.Join(insp.Config.Env, ";")) c.SetState(insp.State.Status) } diff --git a/cwidgets/single/env.go b/cwidgets/single/env.go index 5758421..4a3b4c9 100644 --- a/cwidgets/single/env.go +++ b/cwidgets/single/env.go @@ -3,6 +3,7 @@ package single import ( ui "github.com/gizak/termui" "regexp" + "strings" ) var envPattern = regexp.MustCompile(`(?P[^=]+)=(?P.*)`) @@ -23,14 +24,16 @@ func NewEnv() *Env { return i } -func (w *Env) Set(k, v string) { - match := envPattern.FindStringSubmatch(v) - key := match[1] - value := match[2] - w.data[key] = value - +func (w *Env) Set(allEnvs string) { + envs := strings.Split(allEnvs, ";") w.Rows = [][]string{} - w.Rows = append(w.Rows, mkInfoRows(key, value)...) + for _, env := range envs { + match := envPattern.FindStringSubmatch(env) + key := match[1] + value := match[2] + w.data[key] = value + w.Rows = append(w.Rows, mkInfoRows(key, value)...) + } w.Height = len(w.Rows) + 2 } diff --git a/cwidgets/single/main.go b/cwidgets/single/main.go index dbc5613..7a976b1 100644 --- a/cwidgets/single/main.go +++ b/cwidgets/single/main.go @@ -55,7 +55,7 @@ func (e *Single) SetWidth(w int) { e.Width = w } func (e *Single) SetMeta(m models.Meta) { for k, v := range m { if k == "[ENV-VAR]" { - e.Env.Set(k, v) + e.Env.Set(v) } else { e.Info.Set(k, v) }