mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
Merge branch 'master' into refresh_periodically
# Conflicts: # connector/docker.go
This commit is contained in:
commit
cc43dbc84e
@ -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,
|
||||
|
@ -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,
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -3,6 +3,7 @@ package single
|
||||
import (
|
||||
ui "github.com/gizak/termui"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var envPattern = regexp.MustCompile(`(?P<KEY>[^=]+)=(?P<VALUJE>.*)`)
|
||||
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user