1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Add utils.Includes() helper function

This commit is contained in:
Chris Cummer 2019-08-20 16:39:15 -07:00
parent faf365baa1
commit c832db9ddb
3 changed files with 85 additions and 17 deletions

View File

@ -40,18 +40,12 @@ func NewWidget(app *tview.Application, settings *Settings) *Widget {
// Refresh executes the command and updates the view with the results // Refresh executes the command and updates the view with the results
func (widget *Widget) Refresh() { func (widget *Widget) Refresh() {
title := widget.generateTitle() title := widget.generateTitle()
client := widget.getInstance() client := widget.getInstance()
var content string var content string
// Debug Info if utils.Includes(widget.objects, "nodes") {
//content += fmt.Sprintf("Namespaces: %q %d\n", widget.namespaces, len(widget.namespaces))
//content += fmt.Sprintf("Objects: %q %d\n\n", widget.objects, len(widget.objects))
if !utils.DoesNotInclude(widget.objects, "nodes") {
nodeList, nodeError := client.getNodes() nodeList, nodeError := client.getNodes()
if nodeError != nil { if nodeError != nil {
widget.Redraw(title, "[red] Error getting node data [white]\n", true) widget.Redraw(title, "[red] Error getting node data [white]\n", true)
@ -64,7 +58,7 @@ func (widget *Widget) Refresh() {
content += "\n" content += "\n"
} }
if !utils.DoesNotInclude(widget.objects, "deployments") { if utils.Includes(widget.objects, "deployments") {
deploymentList, deploymentError := client.getDeployments(widget.namespaces) deploymentList, deploymentError := client.getDeployments(widget.namespaces)
if deploymentError != nil { if deploymentError != nil {
widget.Redraw(title, "[red] Error getting deployment data [white]\n", true) widget.Redraw(title, "[red] Error getting deployment data [white]\n", true)
@ -77,7 +71,7 @@ func (widget *Widget) Refresh() {
content += "\n" content += "\n"
} }
if !utils.DoesNotInclude(widget.objects, "pods") { if utils.Includes(widget.objects, "pods") {
podList, podError := client.getPods(widget.namespaces) podList, podError := client.getPods(widget.namespaces)
if podError != nil { if podError != nil {
widget.Redraw(title, "[red] Error getting pod data [white]\n", false) widget.Redraw(title, "[red] Error getting pod data [white]\n", false)

View File

@ -33,12 +33,7 @@ const (
// > true // > true
// //
func DoesNotInclude(strs []string, val string) bool { func DoesNotInclude(strs []string, val string) bool {
for _, str := range strs { return !Includes(strs, val)
if val == str {
return false
}
}
return true
} }
// ExecuteCommand executes an external command on the local machine as the current user // ExecuteCommand executes an external command on the local machine as the current user
@ -76,6 +71,26 @@ func FindMatch(pattern string, data string) [][]string {
return r.FindAllStringSubmatch(data, -1) return r.FindAllStringSubmatch(data, -1)
} }
// Includes takes a slice of strings and a target string and returns
// TRUE if the slice includes the target, FALSE if it does not
//
// Example:
//
// x := Includes([]string{"cat", "dog", "rat"}, "dog")
// > true
//
// x := Includes([]string{"cat", "dog", "rat"}, "pig")
// > false
//
func Includes(strs []string, val string) bool {
for _, str := range strs {
if val == str {
return true
}
}
return false
}
// OpenFile opens the file defined in `path` via the operating system // OpenFile opens the file defined in `path` via the operating system
func OpenFile(path string) { func OpenFile(path string) {
if (strings.HasPrefix(path, "http://")) || (strings.HasPrefix(path, "https://")) { if (strings.HasPrefix(path, "http://")) || (strings.HasPrefix(path, "https://")) {

View File

@ -9,8 +9,35 @@ import (
) )
func Test_DoesNotInclude(t *testing.T) { func Test_DoesNotInclude(t *testing.T) {
Equal(t, true, DoesNotInclude([]string{"cat", "dog", "rat"}, "bat")) tests := []struct {
Equal(t, false, DoesNotInclude([]string{"cat", "dog", "rat"}, "dog")) name string
strs []string
val string
expected bool
}{
{
name: "when included",
strs: []string{"a", "b", "c"},
val: "b",
expected: false,
},
{
name: "when not included",
strs: []string{"a", "b", "c"},
val: "f",
expected: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
actual := DoesNotInclude(tt.strs, tt.val)
if tt.expected != actual {
t.Errorf("\nexpected: %t\n got: %t", tt.expected, actual)
}
})
}
} }
func Test_ExecuteCommand(t *testing.T) { func Test_ExecuteCommand(t *testing.T) {
@ -50,6 +77,38 @@ func Test_FindMatch(t *testing.T) {
Equal(t, expected, result) Equal(t, expected, result)
} }
func Test_Includes(t *testing.T) {
tests := []struct {
name string
strs []string
val string
expected bool
}{
{
name: "when included",
strs: []string{"a", "b", "c"},
val: "b",
expected: true,
},
{
name: "when not included",
strs: []string{"a", "b", "c"},
val: "f",
expected: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
actual := Includes(tt.strs, tt.val)
if tt.expected != actual {
t.Errorf("\nexpected: %t\n got: %t", tt.expected, actual)
}
})
}
}
func Test_ReadFileBytes(t *testing.T) { func Test_ReadFileBytes(t *testing.T) {
tests := []struct { tests := []struct {
name string name string