package main import ( "fmt" "os/exec" "strings" ) func CmusRemoteOutput() ([]string, error) { c := exec.Command("cmus-remote", "-Q") o, err := c.Output() if err != nil { return []string{}, err } resp := strings.Split(string(o), "\n") return resp, err } func getAttribute(input []string, prefix ...string) (string, error) { var attr string // probably more efficent to simply parse first selected list of prefixes, but i'd prefer it be first prefix in the preferred order for p := range prefix { for i := range input { has := strings.HasPrefix(input[i], prefix[p]) if has { attr = input[i] attr, b := strings.CutPrefix(attr, prefix[p]) if !b { return "", fmt.Errorf("prefix \"%v\" in \"%v\" does not exist", prefix, attr) } return attr, nil } } } return "", fmt.Errorf("prefixes \"%v\" were not found", prefix) }