diff --git a/.gitignore b/.gitignore index 6276bc9..4ad6861 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ ctop -.idea \ No newline at end of file +.idea +/vendor/ \ No newline at end of file diff --git a/colors.go b/colors.go index 4dad49e..7619e28 100644 --- a/colors.go +++ b/colors.go @@ -52,7 +52,7 @@ var ColorMap = map[string]ui.Attribute{ func InvertColorMap() { re := regexp.MustCompile(".*.fg") - for k, _ := range ColorMap { + for k := range ColorMap { if re.FindAllString(k, 1) != nil { ColorMap[k] = ui.ColorBlack } diff --git a/config/file.go b/config/file.go index e344e8c..92bec57 100644 --- a/config/file.go +++ b/config/file.go @@ -13,13 +13,13 @@ var ( xdgRe = regexp.MustCompile("^XDG_*") ) -type ConfigFile struct { +type File struct { Options map[string]string `toml:"options"` Toggles map[string]bool `toml:"toggles"` } -func exportConfig() ConfigFile { - c := ConfigFile{ +func exportConfig() File { + c := File{ Options: make(map[string]string), Toggles: make(map[string]bool), } @@ -33,7 +33,7 @@ func exportConfig() ConfigFile { } func Read() error { - var config ConfigFile + var config File path, err := getConfigPath() if err != nil { diff --git a/config/switch.go b/config/switch.go index 36a8a91..e209d79 100644 --- a/config/switch.go +++ b/config/switch.go @@ -61,7 +61,7 @@ func UpdateSwitch(k string, val bool) { // Toggle a boolean switch func Toggle(k string) { sw := GetSwitch(k) - newVal := sw.Val != true + newVal := !sw.Val log.Noticef("config change: %s: %t -> %t", k, sw.Val, newVal) sw.Val = newVal //log.Errorf("ignoring toggle for non-existant switch: %s", k) diff --git a/connector/collector/docker_logs.go b/connector/collector/docker_logs.go index 3f1e40f..d5e010d 100644 --- a/connector/collector/docker_logs.go +++ b/connector/collector/docker_logs.go @@ -48,7 +48,7 @@ func (l *DockerLogs) Stream() chan models.Log { for scanner.Scan() { parts := strings.Split(scanner.Text(), " ") ts := l.parseTime(parts[0]) - logCh <- models.Log{ts, strings.Join(parts[1:], " ")} + logCh <- models.Log{Timestamp: ts, Message: strings.Join(parts[1:], " ")} } }() @@ -62,10 +62,8 @@ func (l *DockerLogs) Stream() chan models.Log { }() go func() { - select { - case <-l.done: - cancel() - } + <-l.done + cancel() }() log.Infof("log reader started for container: %s", l.id) diff --git a/connector/collector/mock_logs.go b/connector/collector/mock_logs.go index fc79463..1b9fc1f 100644 --- a/connector/collector/mock_logs.go +++ b/connector/collector/mock_logs.go @@ -20,7 +20,7 @@ func (l *MockLogs) Stream() chan models.Log { case <-l.done: break default: - logCh <- models.Log{time.Now(), mockLog} + logCh <- models.Log{Timestamp: time.Now(), Message: mockLog} time.Sleep(250 * time.Millisecond) } } diff --git a/connector/docker.go b/connector/docker.go index 218f738..73ea10d 100644 --- a/connector/docker.go +++ b/connector/docker.go @@ -105,7 +105,7 @@ func (cm *Docker) refresh(c *container.Container) { 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]", string(env)) + c.SetMeta("[ENV-VAR]", env) } c.SetState(insp.State.Status) } @@ -113,7 +113,7 @@ func (cm *Docker) refresh(c *container.Container) { func (cm *Docker) inspect(id string) *api.Container { c, err := cm.client.InspectContainer(id) if err != nil { - if _, ok := err.(*api.NoSuchContainer); ok == false { + if _, ok := err.(*api.NoSuchContainer); !ok { log.Errorf(err.Error()) } } diff --git a/container/main.go b/container/main.go index 586dd94..b4bd0b3 100644 --- a/container/main.go +++ b/container/main.go @@ -13,6 +13,10 @@ var ( log = logging.Init() ) +const ( + running = "running" +) + // Metrics and metadata representing a container type Container struct { models.Metrics @@ -60,12 +64,12 @@ func (c *Container) GetMeta(k string) string { func (c *Container) SetState(s string) { c.SetMeta("state", s) // start collector, if needed - if s == "running" && !c.collector.Running() { + if s == running && !c.collector.Running() { c.collector.Start() c.Read(c.collector.Stream()) } // stop collector, if needed - if s != "running" && c.collector.Running() { + if s != running && c.collector.Running() { c.collector.Stop() } } @@ -90,18 +94,18 @@ func (c *Container) Read(stream chan models.Metrics) { } func (c *Container) Start() { - if c.Meta["state"] != "running" { + if c.Meta["state"] != running { if err := c.manager.Start(); err != nil { log.Warningf("container %s: %v", c.Id, err) log.StatusErr(err) return } - c.SetState("running") + c.SetState(running) } } func (c *Container) Stop() { - if c.Meta["state"] == "running" { + if c.Meta["state"] == running { if err := c.manager.Stop(); err != nil { log.Warningf("container %s: %v", c.Id, err) log.StatusErr(err) @@ -119,7 +123,7 @@ func (c *Container) Remove() { } func (c *Container) Pause() { - if c.Meta["state"] == "running" { + if c.Meta["state"] == running { if err := c.manager.Pause(); err != nil { log.Warningf("container %s: %v", c.Id, err) log.StatusErr(err) @@ -136,12 +140,12 @@ func (c *Container) Unpause() { log.StatusErr(err) return } - c.SetState("running") + c.SetState(running) } } func (c *Container) Restart() { - if c.Meta["state"] == "running" { + if c.Meta["state"] == running { if err := c.manager.Restart(); err != nil { log.Warningf("container %s: %v", c.Id, err) log.StatusErr(err) diff --git a/cwidgets/compact/grid.go b/cwidgets/compact/grid.go index 708ae34..8b483c2 100644 --- a/cwidgets/compact/grid.go +++ b/cwidgets/compact/grid.go @@ -57,7 +57,5 @@ func (cg *CompactGrid) Buffer() ui.Buffer { } func (cg *CompactGrid) AddRows(rows ...ui.GridBufferer) { - for _, r := range rows { - cg.Rows = append(cg.Rows, r) - } + cg.Rows = append(cg.Rows, rows...) } diff --git a/cwidgets/compact/setters.go b/cwidgets/compact/setters.go index 35817b4..779991e 100644 --- a/cwidgets/compact/setters.go +++ b/cwidgets/compact/setters.go @@ -19,7 +19,7 @@ func (row *Compact) SetIO(read int64, write int64) { } func (row *Compact) SetPids(val int) { - label := fmt.Sprintf("%s", strconv.Itoa(val)) + label := strconv.Itoa(val) row.Pids.Set(label) } diff --git a/cwidgets/compact/util.go b/cwidgets/compact/util.go index b378209..e634ed9 100644 --- a/cwidgets/compact/util.go +++ b/cwidgets/compact/util.go @@ -4,6 +4,7 @@ package compact import ( "fmt" + ui "github.com/gizak/termui" ) @@ -28,7 +29,7 @@ func calcWidth(width int) int { for _, w := range colWidths { width -= w if w == 0 { - staticCols += 1 + staticCols++ } } return (width - spacing) / staticCols diff --git a/logging/server.go b/logging/server.go index 8cca836..25ac94b 100644 --- a/logging/server.go +++ b/logging/server.go @@ -2,6 +2,7 @@ package logging import ( "fmt" + "io" "net" "sync" ) @@ -56,13 +57,13 @@ func StopServer() { } } -func handler(conn net.Conn) { +func handler(wc io.WriteCloser) { server.wg.Add(1) defer server.wg.Done() - defer conn.Close() + defer wc.Close() for msg := range Log.tail() { msg = fmt.Sprintf("%s\n", msg) - conn.Write([]byte(msg)) + wc.Write([]byte(msg)) } - conn.Write([]byte("bye\n")) + wc.Write([]byte("bye\n")) } diff --git a/widgets/input.go b/widgets/input.go index 1da8dbe..75b3b24 100644 --- a/widgets/input.go +++ b/widgets/input.go @@ -77,7 +77,7 @@ func (i *Input) KeyPress(e ui.Event) { if len(i.Data) >= i.MaxLen { return } - if strings.Index(input_chars, ch) > -1 { + if strings.Contains(input_chars, ch) { i.Data += ch i.stream <- i.Data ui.Render(i)