mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
add --connector switch, validation
This commit is contained in:
parent
eeac65da8c
commit
d372043a17
@ -19,7 +19,7 @@ type Docker struct {
|
||||
lock sync.RWMutex
|
||||
}
|
||||
|
||||
func NewDocker() *Docker {
|
||||
func NewDocker() Connector {
|
||||
// init docker client
|
||||
client, err := api.NewClientFromEnv()
|
||||
if err != nil {
|
||||
|
@ -7,7 +7,7 @@ import (
|
||||
|
||||
var log = logging.Init()
|
||||
|
||||
type ContainerSource interface {
|
||||
type Connector interface {
|
||||
All() container.Containers
|
||||
Get(string) (*container.Container, bool)
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ func getFactory(opts RuncOpts) (libcontainer.Factory, error) {
|
||||
return libcontainer.New(opts.root, cgroupManager, libcontainer.CriuPath("criu"))
|
||||
}
|
||||
|
||||
func NewRunc() *Runc {
|
||||
func NewRunc() Connector {
|
||||
opts, err := readRuncOpts()
|
||||
runcFailOnErr(err)
|
||||
|
||||
|
12
cursor.go
12
cursor.go
@ -8,16 +8,20 @@ import (
|
||||
ui "github.com/gizak/termui"
|
||||
)
|
||||
|
||||
var enabledConnectors = map[string]func() connector.Connector{
|
||||
"docker": connector.NewDocker,
|
||||
"runc": connector.NewRunc,
|
||||
}
|
||||
|
||||
type GridCursor struct {
|
||||
selectedID string // id of currently selected container
|
||||
filtered container.Containers
|
||||
cSource connector.ContainerSource
|
||||
cSource connector.Connector
|
||||
}
|
||||
|
||||
func NewGridCursor() *GridCursor {
|
||||
func NewGridCursor(connector string) *GridCursor {
|
||||
return &GridCursor{
|
||||
cSource: connector.NewRunc(),
|
||||
//cSource: connector.NewDocker(),
|
||||
cSource: enabledConnectors[connector](),
|
||||
}
|
||||
}
|
||||
|
||||
|
18
main.go
18
main.go
@ -4,6 +4,7 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/bcicen/ctop/config"
|
||||
"github.com/bcicen/ctop/container"
|
||||
@ -37,8 +38,11 @@ func main() {
|
||||
var sortFieldFlag = flag.String("s", "", "select container sort field")
|
||||
var reverseSortFlag = flag.Bool("r", false, "reverse container sort order")
|
||||
var invertFlag = flag.Bool("i", false, "invert default colors")
|
||||
var connectorFlag = flag.String("connector", "docker", "container connector to use")
|
||||
flag.Parse()
|
||||
|
||||
validConnector(*connectorFlag)
|
||||
|
||||
if *versionFlag {
|
||||
fmt.Println(versionStr)
|
||||
os.Exit(0)
|
||||
@ -75,7 +79,7 @@ func main() {
|
||||
|
||||
defer Shutdown()
|
||||
// init grid, cursor, header
|
||||
cursor = NewGridCursor()
|
||||
cursor = NewGridCursor(*connectorFlag)
|
||||
cGrid = compact.NewCompactGrid()
|
||||
header = widgets.NewCTopHeader()
|
||||
|
||||
@ -104,6 +108,18 @@ func Shutdown() {
|
||||
}
|
||||
}
|
||||
|
||||
func validConnector(s string) {
|
||||
if _, ok := enabledConnectors[s]; !ok {
|
||||
fmt.Printf("invalid connector type: %s", s)
|
||||
var connectors []string
|
||||
for k, _ := range enabledConnectors {
|
||||
connectors = append(connectors, k)
|
||||
}
|
||||
fmt.Printf("connector must be one of: %s", strings.Join(connectors, ","))
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
// ensure a given sort field is valid
|
||||
func validSort(s string) {
|
||||
if _, ok := container.Sorters[s]; !ok {
|
||||
|
Loading…
Reference in New Issue
Block a user