on main help sign in
refactor: use `ContainsAnyOf` from `x`
99a896dAndrey Nering
internal/cmd/root.go+2−2
@@ -20,7 +20,6 @@ import (
20 "github.com/charmbracelet/crush/internal/db"
20 "github.com/charmbracelet/crush/internal/db"
21 "github.com/charmbracelet/crush/internal/event"
21 "github.com/charmbracelet/crush/internal/event"
22 "github.com/charmbracelet/crush/internal/projects"
22 "github.com/charmbracelet/crush/internal/projects"
23− "github.com/charmbracelet/crush/internal/stringext"
24 "github.com/charmbracelet/crush/internal/tui"
23 "github.com/charmbracelet/crush/internal/tui"
25 "github.com/charmbracelet/crush/internal/ui/common"
24 "github.com/charmbracelet/crush/internal/ui/common"
26 ui "github.com/charmbracelet/crush/internal/ui/model"
25 ui "github.com/charmbracelet/crush/internal/ui/model"
@@ -29,6 +28,7 @@ import (
29 uv "github.com/charmbracelet/ultraviolet"
28 uv "github.com/charmbracelet/ultraviolet"
30 "github.com/charmbracelet/x/ansi"
29 "github.com/charmbracelet/x/ansi"
31 "github.com/charmbracelet/x/exp/charmtone"
30 "github.com/charmbracelet/x/exp/charmtone"
31+ xstrings "github.com/charmbracelet/x/exp/strings"
32 "github.com/charmbracelet/x/term"
32 "github.com/charmbracelet/x/term"
33 "github.com/spf13/cobra"
33 "github.com/spf13/cobra"
34)
34)
@@ -314,5 +314,5 @@ func shouldQueryCapabilities(env uv.Environ) bool {
314 return (!okTermProg && !okSSHTTY) ||
314 return (!okTermProg && !okSSHTTY) ||
315 (!strings.Contains(termProg, osVendorTypeApple) && !okSSHTTY) ||
315 (!strings.Contains(termProg, osVendorTypeApple) && !okSSHTTY) ||
316 // Terminals that do support XTVERSION.
316 // Terminals that do support XTVERSION.
317− stringext.ContainsAny(termType, kittyTerminals...)
317+ xstrings.ContainsAnyOf(termType, kittyTerminals...)
318}
318}
internal/cmd/root_test.go+2−2
@@ -4,8 +4,8 @@ import (
4 "strings"
4 "strings"
5 "testing"
5 "testing"
6
6
7− "github.com/charmbracelet/crush/internal/stringext"
8 uv "github.com/charmbracelet/ultraviolet"
7 uv "github.com/charmbracelet/ultraviolet"
8+ xstrings "github.com/charmbracelet/x/exp/strings"
9 "github.com/stretchr/testify/require"
9 "github.com/stretchr/testify/require"
10)
10)
11
11
@@ -153,7 +153,7 @@ func TestStringextContainsAny(t *testing.T) {
153 for _, tt := range tests {
153 for _, tt := range tests {
154 t.Run(tt.name, func(t *testing.T) {
154 t.Run(tt.name, func(t *testing.T) {
155 t.Parallel()
155 t.Parallel()
156− got := stringext.ContainsAny(tt.s, tt.substr...)
156+ got := xstrings.ContainsAnyOf(tt.s, tt.substr...)
157 require.Equal(t, tt.want, got)
157 require.Equal(t, tt.want, got)
158 })
158 })
159 }
159 }
internal/stringext/string.go−11
@@ -1,8 +1,6 @@
1package stringext
1package stringext
2
2
3import (
3import (
4− "strings"
5−
6 "golang.org/x/text/cases"
4 "golang.org/x/text/cases"
7 "golang.org/x/text/language"
5 "golang.org/x/text/language"
8)
6)
@@ -10,12 +8,3 @@ import (
10func Capitalize(text string) string {
8func Capitalize(text string) string {
11 return cases.Title(language.English, cases.Compact).String(text)
9 return cases.Title(language.English, cases.Compact).String(text)
12}
10}
13−
14−func ContainsAny(str string, args ...string) bool {
15− for _, arg := range args {
16− if strings.Contains(str, arg) {
17− return true
18− }
19− }
20− return false
21−}
internal/tui/tui.go+2−2
@@ -19,7 +19,6 @@ import (
19 "github.com/charmbracelet/crush/internal/home"
19 "github.com/charmbracelet/crush/internal/home"
20 "github.com/charmbracelet/crush/internal/permission"
20 "github.com/charmbracelet/crush/internal/permission"
21 "github.com/charmbracelet/crush/internal/pubsub"
21 "github.com/charmbracelet/crush/internal/pubsub"
22− "github.com/charmbracelet/crush/internal/stringext"
23 cmpChat "github.com/charmbracelet/crush/internal/tui/components/chat"
22 cmpChat "github.com/charmbracelet/crush/internal/tui/components/chat"
24 "github.com/charmbracelet/crush/internal/tui/components/chat/splash"
23 "github.com/charmbracelet/crush/internal/tui/components/chat/splash"
25 "github.com/charmbracelet/crush/internal/tui/components/completions"
24 "github.com/charmbracelet/crush/internal/tui/components/completions"
@@ -37,6 +36,7 @@ import (
37 "github.com/charmbracelet/crush/internal/tui/page/chat"
36 "github.com/charmbracelet/crush/internal/tui/page/chat"
38 "github.com/charmbracelet/crush/internal/tui/styles"
37 "github.com/charmbracelet/crush/internal/tui/styles"
39 "github.com/charmbracelet/crush/internal/tui/util"
38 "github.com/charmbracelet/crush/internal/tui/util"
39+ xstrings "github.com/charmbracelet/x/exp/strings"
40 "golang.org/x/mod/semver"
40 "golang.org/x/mod/semver"
41 "golang.org/x/text/cases"
41 "golang.org/x/text/cases"
42 "golang.org/x/text/language"
42 "golang.org/x/text/language"
@@ -129,7 +129,7 @@ func (a *appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
129 }
129 }
130 termVersion := strings.ToLower(msg.Name)
130 termVersion := strings.ToLower(msg.Name)
131 switch {
131 switch {
132− case stringext.ContainsAny(termVersion, "ghostty", "rio"):
132+ case xstrings.ContainsAnyOf(termVersion, "ghostty", "rio"):
133 a.sendProgressBar = true
133 a.sendProgressBar = true
134 case strings.Contains(termVersion, "iterm2"):
134 case strings.Contains(termVersion, "iterm2"):
135 // iTerm2 supports progress bars from version v3.6.6
135 // iTerm2 supports progress bars from version v3.6.6