Files
esctl/cmd/completion.go

85 lines
1.7 KiB
Go
Raw Normal View History

/*
Copyright © 2026 Thomas von Dein
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cmd
import (
"fmt"
"codeberg.org/scip/esctl/pkg/cfg"
"codeberg.org/scip/esctl/pkg/es"
"github.com/urfave/cli/v3"
)
const (
Cindex = iota
Cdatastream
Crole
Ccluster
Capi
2026-06-22 13:52:02 +02:00
Cilm
2026-07-01 13:13:16 +02:00
Cnode
Cclustersettings
)
func complete(cmd *cli.Command, what int) {
if cmd.NArg() > 0 {
return
}
// FIXME: config should load from root.Before(), see https://github.com/urfave/cli/issues/2348
// workaround: load it directly here
conf := cfg.NewConfig()
if err := conf.Init(); err != nil {
return
}
2026-07-07 23:45:14 +02:00
var (
list []string
err error
)
switch what {
case Cindex:
list, err = es.IndexNames(conf)
case Crole:
list, err = es.RoleNames(conf)
case Ccluster:
for cluster := range conf.Clusters {
list = append(list, cluster)
}
case Cdatastream:
list, err = es.DatastreamNames(conf)
case Capi:
list = es.ApiPathNames()
2026-06-22 13:52:02 +02:00
case Cilm:
list, err = es.IlmNames(conf)
2026-07-01 13:13:16 +02:00
case Cnode:
list, err = es.NodeNames(conf)
case Cclustersettings:
list, err = es.ClusterSettingsNames(conf)
}
if err != nil {
return
}
for _, item := range list {
fmt.Println(item)
}
}