Skip to content

Commit 0d7040c

Browse files
Horiodinodr-housemd
authored andcommitted
improved searching sort
Signed-off-by: Horiodino <holiodin@gmail.com>
1 parent 9d532a9 commit 0d7040c

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

cmd/search/model.go

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package search
22

33
import (
44
"context"
5+
"sort"
6+
"strings"
57
"time"
68

79
"github.com/buildsafedev/bsf/cmd/styles"
@@ -26,11 +28,31 @@ func (i pkgitem) FilterValue() string {
2628
return i.name
2729
}
2830

29-
func convLPR2Items(packages *buildsafev1.ListPackagesResponse) []list.Item {
31+
func convLPR2Items(packages *buildsafev1.ListPackagesResponse, args ...string) []list.Item {
3032
items := make([]list.Item, 0, len(packages.Packages))
31-
for _, name := range packages.Packages {
32-
items = append(items, pkgitem{name: name})
33+
34+
if len(args) == 0 || args[0] == "" {
35+
return nil
36+
}
37+
38+
for _, pkg := range packages.Packages {
39+
if strings.Contains(pkg, args[0]) {
40+
items = append(items, pkgitem{name: pkg})
41+
}
3342
}
43+
sort.Slice(items, func(i, j int) bool {
44+
nameI := items[i].(pkgitem).name
45+
nameJ := items[j].(pkgitem).name
46+
47+
if strings.HasPrefix(nameI, args[0]) && !strings.HasPrefix(nameJ, args[0]) {
48+
return true
49+
}
50+
if !strings.HasPrefix(nameI, args[0]) && strings.HasPrefix(nameJ, args[0]) {
51+
return false
52+
}
53+
54+
return nameI < nameJ
55+
})
3456

3557
return items
3658
}

cmd/search/search.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ var SearchCmd = &cobra.Command{
7373
fmt.Println(errorStyle.Render(fmt.Errorf("error: %v", err).Error()))
7474
os.Exit(1)
7575
}
76-
items := convLPR2Items(packages)
76+
items := convLPR2Items(packages, args...)
7777
m := InitSearch(items)
7878
if _, err := tea.NewProgram(m, tea.WithAltScreen()).Run(); err != nil {
7979
fmt.Println(errorStyle.Render(fmt.Errorf("error: %v", err).Error()))

0 commit comments

Comments
 (0)