cmd-zet/internal/zet/search.go
Oliver Davies 948872b933 Refactor
Signed-off-by: Oliver Davies <oliver@oliverdavies.uk>
2025-10-04 02:21:28 +01:00

44 lines
689 B
Go

package zet
import (
"fmt"
"os"
"regexp"
"sort"
"strconv"
"code.oliverdavies.uk/opdavies/cmd-zet/internal/git"
)
func SearchZets(query string) []int {
zets, err := git.ExecGitCommand("grep", "-i", "--name-only", "--word-regex", query)
if err != nil {
fmt.Printf("No matches found for %s.\n", query)
os.Exit(1)
}
re := regexp.MustCompile(`[0-9]+`)
matches := re.FindAllString(zets, -1)
sort.Strings(matches)
ids := make(map[int]struct{})
for _, id := range matches {
num, err := strconv.Atoi(id)
if err == nil {
ids[num] = struct{}{}
}
}
var sorted []int
for num := range ids {
sorted = append(sorted, num)
}
sort.Ints(sorted)
return sorted
}