diff --git a/containermap.go b/containermap.go index 37a0363..1419552 100644 --- a/containermap.go +++ b/containermap.go @@ -1,8 +1,6 @@ package main import ( - "fmt" - "regexp" "sort" "strings" @@ -100,18 +98,7 @@ func (cm *ContainerMap) Del(ids ...string) { func (cm *ContainerMap) All() []*Container { var containers Containers - filter := config.GetVal("filterStr") - re := regexp.MustCompile(fmt.Sprintf(".*%s", filter)) - for _, c := range cm.containers { - // Apply name filter - if re.FindAllString(c.name, 1) == nil { - continue - } - // Apply state filter - if !config.GetSwitchVal("allContainers") && c.state != "running" { - continue - } containers = append(containers, c) } diff --git a/sort.go b/sort.go index 3e0d86b..8adb535 100644 --- a/sort.go +++ b/sort.go @@ -1,6 +1,9 @@ package main import ( + "fmt" + "regexp" + "github.com/bcicen/ctop/config" ) @@ -34,4 +37,23 @@ func (a Containers) Less(i, j int) bool { return f(a[i], a[j]) } +func (a Containers) Filter() (filtered []*Container) { + filter := config.GetVal("filterStr") + re := regexp.MustCompile(fmt.Sprintf(".*%s", filter)) + + for _, c := range a { + // Apply name filter + if re.FindAllString(c.name, 1) == nil { + continue + } + // Apply state filter + if !config.GetSwitchVal("allContainers") && c.state != "running" { + continue + } + filtered = append(filtered, c) + } + + return filtered +} + func sumNet(c *Container) int64 { return c.metrics.NetRx + c.metrics.NetTx }