diff --git a/config/columns.go b/config/columns.go index da9f7fa..fb539d8 100644 --- a/config/columns.go +++ b/config/columns.go @@ -6,47 +6,67 @@ import ( // defaults var defaultColumns = []Column{ - Column{ + { Name: "status", Label: "Status Indicator", Enabled: true, }, - Column{ + { Name: "name", Label: "Container Name", Enabled: true, }, - Column{ + { Name: "id", Label: "Container ID", Enabled: true, }, - Column{ + { + Name: "image", + Label: "Image name", + Enabled: false, + }, + { + Name: "ports", + Label: "Exposed ports", + Enabled: false, + }, + { + Name: "IPs", + Label: "Exposed IPs", + Enabled: false, + }, + { + Name: "created", + Label: "Date created", + Enabled: false, + }, + { Name: "cpu", Label: "CPU Usage", Enabled: true, }, - Column{ + { Name: "cpus", Label: "CPU Usage (% of system total)", Enabled: false, }, - Column{ + { Name: "mem", Label: "Memory Usage", Enabled: true, }, - Column{ + { Name: "net", Label: "Network RX/TX", Enabled: true, }, - Column{ + { Name: "io", Label: "Disk IO Read/Write", Enabled: true, }, - Column{ + { Name: "pids", Label: "Container PID Count", Enabled: true, diff --git a/cwidgets/compact/column.go b/cwidgets/compact/column.go index 4ff0793..7558dd9 100644 --- a/cwidgets/compact/column.go +++ b/cwidgets/compact/column.go @@ -9,15 +9,19 @@ import ( var ( allCols = map[string]NewCompactColFn{ - "status": NewStatus, - "name": NewNameCol, - "id": NewCIDCol, - "cpu": NewCPUCol, - "cpus": NewCpuScaledCol, - "mem": NewMemCol, - "net": NewNetCol, - "io": NewIOCol, - "pids": NewPIDCol, + "status": NewStatus, + "name": NewNameCol, + "id": NewCIDCol, + "image": NewImageCol, + "ports": NewPortsCol, + "IPs": NewIpsCol, + "created": NewCreatedCol, + "cpu": NewCPUCol, + "cpus": NewCpuScaledCol, + "mem": NewMemCol, + "net": NewNetCol, + "io": NewIOCol, + "pids": NewPIDCol, } ) diff --git a/cwidgets/compact/text.go b/cwidgets/compact/text.go index ef2642b..5b3432b 100644 --- a/cwidgets/compact/text.go +++ b/cwidgets/compact/text.go @@ -9,32 +9,44 @@ import ( ui "github.com/gizak/termui" ) -type NameCol struct { +// Column that shows container's meta property i.e. name, id, image tc. +type MetaCol struct { *TextCol + metaName string +} + +func (w *MetaCol) SetMeta(m models.Meta) { + w.setText(m.Get(w.metaName)) } func NewNameCol() CompactCol { - c := &NameCol{NewTextCol("NAME")} + c := &MetaCol{NewTextCol("NAME"), "name"} c.fWidth = 30 return c } -func (w *NameCol) SetMeta(m models.Meta) { - w.setText(m.Get("name")) -} - -type CIDCol struct { - *TextCol -} - func NewCIDCol() CompactCol { - c := &CIDCol{NewTextCol("CID")} + c := &MetaCol{NewTextCol("CID"), "id"} c.fWidth = 12 return c } -func (w *CIDCol) SetMeta(m models.Meta) { - w.setText(m.Get("id")) +func NewImageCol() CompactCol { + return &MetaCol{NewTextCol("IMAGE"), "image"} +} + +func NewPortsCol() CompactCol { + return &MetaCol{NewTextCol("PORTS"), "ports"} +} + +func NewIpsCol() CompactCol { + return &MetaCol{NewTextCol("IPs"), "IPs"} +} + +func NewCreatedCol() CompactCol { + c := &MetaCol{NewTextCol("CREATED"), "created"} + c.fWidth = 19 // Year will be stripped e.g. "Thu Nov 26 07:44:03" without 2020 at end + return c } type NetCol struct { 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) }