Basic TUI to add new service configuration

This commit is contained in:
Philipp Wolfer 2023-12-05 17:41:15 +01:00
parent ce5cdceb1f
commit ae5f1c5f26
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
8 changed files with 242 additions and 2 deletions

View file

@ -19,6 +19,7 @@ package backends
import (
"fmt"
"reflect"
"sort"
"strings"
"github.com/spf13/viper"
@ -41,6 +42,24 @@ type BackendInfo struct {
ImportCapabilities []Capability
}
func (b BackendInfo) String() string {
return b.Name
}
type BackendList []BackendInfo
func (l BackendList) Len() int {
return len(l)
}
func (l BackendList) Less(i, j int) bool {
return l[i].Name < l[j].Name
}
func (l BackendList) Swap(i, j int) {
l[i], l[j] = l[j], l[i]
}
type Capability = string
func ResolveBackend[T interface{}](config *viper.Viper) (T, error) {
@ -59,8 +78,8 @@ func ResolveBackend[T interface{}](config *viper.Viper) (T, error) {
return result, err
}
func GetBackends() []BackendInfo {
backends := make([]BackendInfo, 0)
func GetBackends() BackendList {
backends := make(BackendList, 0)
for name, backendFunc := range knownBackends {
backend := backendFunc()
info := BackendInfo{
@ -71,6 +90,7 @@ func GetBackends() []BackendInfo {
backends = append(backends, info)
}
sort.Sort(backends)
return backends
}