gograpple/internal/suggest/util.go
2023-10-25 16:34:01 +02:00

47 lines
1.0 KiB
Go

package suggest
import (
"fmt"
"strings"
"github.com/c-bata/go-prompt"
)
func Suggestions(items []string) []prompt.Suggest {
if len(items) == 0 {
return []prompt.Suggest{}
}
s := make([]prompt.Suggest, len(items))
for i := range items {
s[i] = prompt.Suggest{
Text: fmt.Sprint(items[i]),
}
}
return s
}
func MustList(fn func() ([]string, error)) []string {
results, err := fn()
if err != nil {
panic(err)
}
return results
}
func Completer(d prompt.Document, items []string) []prompt.Suggest {
return prompt.FilterContains(Suggestions(items), d.GetWordBeforeCursor(), true)
}
func ParseImage(s string) (repo, name, tag string, err error) {
pieces := strings.Split(s, "/")
switch true {
case len(pieces) == 1 && pieces[0] == s:
imageTag := strings.Split(s, ":")
return "", imageTag[0], imageTag[1], nil
case len(pieces) > 1:
imageTag := strings.Split(pieces[len(pieces)-1], ":")
return strings.Join(pieces[:len(pieces)-1], "/"), imageTag[0], imageTag[1], nil
}
return "", "", "", fmt.Errorf("invalid image value %q provided", s)
}