package cli import ( "bufio" "fmt" "log" "os" "strings" "gitea.elara.ws/Hazel/music-kraken/internal/data" "gitea.elara.ws/Hazel/music-kraken/internal/plugin" ) func printResults(musicObjects []data.MusicObject) { if len(musicObjects) <= 0 { return } for _, m := range musicObjects { if a, ok := m.(data.Artist); ok { fmt.Println("artist: " + a.Name) } else if a, ok := m.(data.Album); ok { fmt.Print("release: " + a.Name) if len(a.Artists) > 0 { names := make([]string, len(a.Artists)) for i, artist := range a.Artists { names[i] = artist.Name } fmt.Println(" by " + strings.Join(names, ", ")) } else { fmt.Println() } } else if a, ok := m.(data.Song); ok { fmt.Print("track: " + a.Name) if len(a.Artists) > 0 { names := make([]string, len(a.Artists)) for i, artist := range a.Artists { names[i] = artist.Name } fmt.Println(" by " + strings.Join(names, ", ")) } else { fmt.Println() } } } fmt.Println() } func Shell() { plugin.RegisterPlugin(&plugin.Musify{}) fmt.Println("== MusicKraken Shell ==") fmt.Println() for { fmt.Print("> ") reader := bufio.NewReader(os.Stdin) line, err := reader.ReadString('\n') if err != nil { log.Fatal(err) return } searchResults, err := plugin.Search(line, plugin.SearchConfig{IgnoreErrors: false}) if err != nil { fmt.Println(err) fmt.Println() } fmt.Println() printResults(searchResults) } }