refactor: use `ContainsAnyOf` from `x`

Andrey Nering created

Change summary

internal/cmd/root.go         |  4 ++--
internal/cmd/root_test.go    |  4 ++--
internal/stringext/string.go | 11 -----------
internal/tui/tui.go          |  4 ++--
4 files changed, 6 insertions(+), 17 deletions(-)

Detailed changes

internal/cmd/root.go 🔗

@@ -20,7 +20,6 @@ import (
 	"github.com/charmbracelet/crush/internal/db"
 	"github.com/charmbracelet/crush/internal/event"
 	"github.com/charmbracelet/crush/internal/projects"
-	"github.com/charmbracelet/crush/internal/stringext"
 	"github.com/charmbracelet/crush/internal/tui"
 	"github.com/charmbracelet/crush/internal/ui/common"
 	ui "github.com/charmbracelet/crush/internal/ui/model"
@@ -29,6 +28,7 @@ import (
 	uv "github.com/charmbracelet/ultraviolet"
 	"github.com/charmbracelet/x/ansi"
 	"github.com/charmbracelet/x/exp/charmtone"
+	xstrings "github.com/charmbracelet/x/exp/strings"
 	"github.com/charmbracelet/x/term"
 	"github.com/spf13/cobra"
 )
@@ -314,5 +314,5 @@ func shouldQueryCapabilities(env uv.Environ) bool {
 	return (!okTermProg && !okSSHTTY) ||
 		(!strings.Contains(termProg, osVendorTypeApple) && !okSSHTTY) ||
 		// Terminals that do support XTVERSION.
-		stringext.ContainsAny(termType, kittyTerminals...)
+		xstrings.ContainsAnyOf(termType, kittyTerminals...)
 }

internal/cmd/root_test.go 🔗

@@ -4,8 +4,8 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/charmbracelet/crush/internal/stringext"
 	uv "github.com/charmbracelet/ultraviolet"
+	xstrings "github.com/charmbracelet/x/exp/strings"
 	"github.com/stretchr/testify/require"
 )
 
@@ -153,7 +153,7 @@ func TestStringextContainsAny(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			t.Parallel()
-			got := stringext.ContainsAny(tt.s, tt.substr...)
+			got := xstrings.ContainsAnyOf(tt.s, tt.substr...)
 			require.Equal(t, tt.want, got)
 		})
 	}

internal/stringext/string.go 🔗

@@ -1,8 +1,6 @@
 package stringext
 
 import (
-	"strings"
-
 	"golang.org/x/text/cases"
 	"golang.org/x/text/language"
 )
@@ -10,12 +8,3 @@ import (
 func Capitalize(text string) string {
 	return cases.Title(language.English, cases.Compact).String(text)
 }
-
-func ContainsAny(str string, args ...string) bool {
-	for _, arg := range args {
-		if strings.Contains(str, arg) {
-			return true
-		}
-	}
-	return false
-}

internal/tui/tui.go 🔗

@@ -19,7 +19,6 @@ import (
 	"github.com/charmbracelet/crush/internal/home"
 	"github.com/charmbracelet/crush/internal/permission"
 	"github.com/charmbracelet/crush/internal/pubsub"
-	"github.com/charmbracelet/crush/internal/stringext"
 	cmpChat "github.com/charmbracelet/crush/internal/tui/components/chat"
 	"github.com/charmbracelet/crush/internal/tui/components/chat/splash"
 	"github.com/charmbracelet/crush/internal/tui/components/completions"
@@ -37,6 +36,7 @@ import (
 	"github.com/charmbracelet/crush/internal/tui/page/chat"
 	"github.com/charmbracelet/crush/internal/tui/styles"
 	"github.com/charmbracelet/crush/internal/tui/util"
+	xstrings "github.com/charmbracelet/x/exp/strings"
 	"golang.org/x/mod/semver"
 	"golang.org/x/text/cases"
 	"golang.org/x/text/language"
@@ -129,7 +129,7 @@ func (a *appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		}
 		termVersion := strings.ToLower(msg.Name)
 		switch {
-		case stringext.ContainsAny(termVersion, "ghostty", "rio"):
+		case xstrings.ContainsAnyOf(termVersion, "ghostty", "rio"):
 			a.sendProgressBar = true
 		case strings.Contains(termVersion, "iterm2"):
 			// iTerm2 supports progress bars from version v3.6.6