Files
Yggdrasil/addonService.go

59 lines
1.3 KiB
Go

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 NewAddonService() *AddonService {
return &AddonService{
Addons: addons,
}
}
func (a *AddonService) GetAddon(name string) (*Addon, error) {
addon, ok := a.Addons[name]
if !ok {
return nil, fmt.Errorf("addon with name %s not found", name)
}
return addon, nil
}
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) (*Addon, error) {
addon, err := a.GetAddon(name)
if err != nil {
return nil, err
}
release, err := addon.GetRemoteRelease()
if err != nil {
return nil, err
}
err = addon.Update(release)
if err != nil {
return nil, err
}
return addon, nil
}