mirror of
https://github.com/foomo/gograpple.git
synced 2025-10-16 12:35:37 +00:00
47 lines
1.0 KiB
Go
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)
|
|
}
|