use mapmap.Slicer to filter index templates ls and index ls (#96)

This commit is contained in:
T. von Dein
2026-07-15 23:47:19 +02:00
parent 55a1005857
commit 00c5d79794
4 changed files with 59 additions and 53 deletions

View File

@@ -30,9 +30,11 @@ import (
"codeberg.org/scip/esctl/pkg/cfg"
"codeberg.org/scip/esctl/pkg/printer"
"codeberg.org/scip/mapmap"
"github.com/charmbracelet/lipgloss"
"github.com/elastic/go-elasticsearch/v9/typedapi/cat/indices"
"github.com/elastic/go-elasticsearch/v9/typedapi/esdsl"
"github.com/elastic/go-elasticsearch/v9/typedapi/types"
"github.com/elastic/go-elasticsearch/v9/typedapi/types/enums/healthstatus"
)
@@ -53,41 +55,35 @@ func IndexNames(conf *cfg.Config) ([]string, error) {
}
func filterIndices(conf *cfg.Config, list indices.Response) indices.Response {
// apply partials filter first
selectedlist := indices.Response{}
var filter *regexp.Regexp
if len(conf.Filter) > 0 {
filter = regexp.MustCompile(conf.Filter[0])
}
return mapmap.NewSlicer(list).MapSliceValuesImmutable(func(index types.IndicesRecord) bool {
fmt.Println(*index.Index)
if strings.HasPrefix(*index.Index, ".ds-") {
// ignore data stream backing indicies
return false
}
for _, index := range list {
if !conf.Partials && strings.HasPrefix(*index.Index, "partial-") {
continue
return false
}
if !conf.Hidden && strings.HasPrefix(*index.Index, ".") {
continue
return false
}
if strings.HasPrefix(*index.Index, ".ds-") {
// ignore data stream backing indicies
continue
if len(conf.Filter) > 0 {
if !filter.MatchString(*index.Index) {
return false
}
}
selectedlist = append(selectedlist, index)
}
if len(conf.Filter) == 0 {
return selectedlist
}
// we support just one filter here, for now
filter := *regexp.MustCompile(conf.Filter[0])
newlist := indices.Response{}
for _, index := range selectedlist {
if filter.MatchString(*index.Index) {
newlist = append(newlist, index)
}
}
return newlist
return true
})
}
func IndexList(conf *cfg.Config) error {