package main import "fmt" type AddonService struct { Addons map[string]Addon } //var addons = map[string]*Addon{ // "Channeler": NewAddon("Channeler", "https://git.site.quack-lab.dev/dave/wow_channeler"), // "Heimdall": NewAddon("Heimdall", "https://git.site.quack-lab.dev/dave/wow-Heimdall"), // "Dechickenator": NewAddon("Dechickenator", "https://git.site.quack-lab.dev/dave/wow_dechickenator"), //} func (a *AddonService) GetAddon(name string) (addon Addon, err error) { var ok bool addon, ok = a.Addons[name] if !ok { return addon, fmt.Errorf("addon with name %s not found", name) } return } func (a *AddonService) GetRemoteVersion(name string) (string, error) { addon, err := a.GetAddon(name) if err != nil { return "", err } return addon.GetRemoteVersion() } func (a *AddonService) GetLocalVersion(name string) (string, error) { addon, err := a.GetAddon(name) if err != nil { return "", err } return addon.GetLocalVersion() } func (a *AddonService) UpdateAddon(name string) (hasBreakingChanges bool, err error) { addon, err := a.GetAddon(name) if err != nil { return false, err } release, err := addon.GetRemoteRelease() if err != nil { return } hasBreakingChanges, err = addon.Update(release) if err != nil { return } return hasBreakingChanges, nil }