diff --git a/addonService.go b/addonService.go index 7786686..a34b713 100644 --- a/addonService.go +++ b/addonService.go @@ -1,13 +1,15 @@ package main +import "fmt" + type AddonService struct { - Addons []*Addon + Addons map[string]*Addon } -var addons = []*Addon{ - NewAddon("Channeler", "https://git.site.quack-lab.dev/dave/wow_channeler"), - NewAddon("Heimdall", "https://git.site.quack-lab.dev/dave/wow-Heimdall"), - NewAddon("Dechickenator", "https://git.site.quack-lab.dev/dave/wow_dechickenator"), +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 { @@ -15,3 +17,42 @@ func NewAddonService() *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 +} diff --git a/main.go b/main.go index bd000ea..04084be 100644 --- a/main.go +++ b/main.go @@ -36,28 +36,6 @@ var addonService *AddonService func main() { addonService = NewAddonService() gamePath = filepath.Join("C:\\", "Games", "WoWRuski") - for _, addon := range addonService.Addons { - localVersion, err := addon.GetLocalVersion() - if err != nil { - Error.Printf("error getting local version: %s", err) - continue - } - log.Printf("%#v", localVersion) - remoteVersion, err := addon.GetRemoteVersion() - if err != nil { - Error.Printf("error getting remote version: %s", err) - continue - } - log.Printf("%#v", remoteVersion) - body, err := json.Marshal(addon) - if err != nil { - Error.Printf("error marshalling addon: %s", err) - continue - } - log.Printf("%s", string(body)) - } - - return app := NewApp() err := wails.Run(&options.App{