39 lines
871 B
Go
39 lines
871 B
Go
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)
|
|
}
|