From 7118e45f3ae7cf9bfae9c51e5660250c815f4e8b Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:04:40 +0200 Subject: [PATCH 01/13] add vendor directory to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 From 6bee1b7f317791974ff7f7f1c6ae2d2d95a64015 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:11:17 +0200 Subject: [PATCH 02/13] remove unneeded select for simple channel receive --- connector/collector/docker_logs.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/connector/collector/docker_logs.go b/connector/collector/docker_logs.go index 3f1e40f..ae3d4a9 100644 --- a/connector/collector/docker_logs.go +++ b/connector/collector/docker_logs.go @@ -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) From 4d48245d7d2118a2a0c5a9a3775e2420eee1fbab Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:12:17 +0200 Subject: [PATCH 03/13] improve boolean logic --- config/switch.go | 2 +- connector/docker.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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/docker.go b/connector/docker.go index 218f738..4e80246 100644 --- a/connector/docker.go +++ b/connector/docker.go @@ -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()) } } From f158fa742fac55c4209b075379f9711663a65b1a Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:12:46 +0200 Subject: [PATCH 04/13] simplify append operation by omitting loop --- cwidgets/compact/grid.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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...) } From efef3456654957e635bfe6aa4dd701b37315d4c8 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:13:04 +0200 Subject: [PATCH 05/13] remove unneeded `fmt.Sprintf` --- cwidgets/compact/setters.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) } From db3d7e8927296f02e8518ecb892dadd549c08d44 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:14:00 +0200 Subject: [PATCH 06/13] change `strings.Index` for `strings.Contains` --- widgets/input.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) From 4d247f52721a77471ad5d7189f052f68372fbd49 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:17:05 +0200 Subject: [PATCH 07/13] replace unkeyed fiels with keyed fields when instantiating log struct --- connector/collector/docker_logs.go | 2 +- connector/collector/mock_logs.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/connector/collector/docker_logs.go b/connector/collector/docker_logs.go index ae3d4a9..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:], " ")} } }() 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) } } From 93556a1754687a41ab9cb7bacfcbb12f710b89f3 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:17:53 +0200 Subject: [PATCH 08/13] replace += with ++ --- cwidgets/compact/util.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 From 8d8f1e72ebc980ae7a692cb7ca025ee72c170ed2 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:21:08 +0200 Subject: [PATCH 09/13] rename ConfigFile to File because `config.ConfigFile` stutters. Instead it's `config.File` --- config/file.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 { From 78caad2dbde229a87de1766f86e497dba8c09360 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:22:04 +0200 Subject: [PATCH 10/13] depend on io.WriteCloser instead of net.Conn --- logging/server.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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")) } From 8a0bd3cf8a6a11b1dd6246c217a491903f92bb3e Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:22:28 +0200 Subject: [PATCH 11/13] remove unneeded cast --- connector/docker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector/docker.go b/connector/docker.go index 4e80246..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) } From 3c83b7576b6201e036f2bacea868fd56f5cd2e05 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:23:44 +0200 Subject: [PATCH 12/13] refactor string on multiple places to constant --- container/main.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) 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) From 77f5e6b73522b0b877a0b916d6ceb076f5fc58d6 Mon Sep 17 00:00:00 2001 From: bartfokker Date: Thu, 25 Oct 2018 22:25:36 +0200 Subject: [PATCH 13/13] remove ignore of variable (unneeded when only index is needed) --- colors.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 }