Implement an addonservice

This commit is contained in:
2025-01-11 20:15:12 +01:00
parent 4134c39721
commit 0a40ccdc4f
2 changed files with 46 additions and 27 deletions

View File

@@ -1,13 +1,15 @@
package main package main
import "fmt"
type AddonService struct { type AddonService struct {
Addons []*Addon Addons map[string]*Addon
} }
var addons = []*Addon{ var addons = map[string]*Addon{
NewAddon("Channeler", "https://git.site.quack-lab.dev/dave/wow_channeler"), "Channeler": NewAddon("Channeler", "https://git.site.quack-lab.dev/dave/wow_channeler"),
NewAddon("Heimdall", "https://git.site.quack-lab.dev/dave/wow-Heimdall"), "Heimdall": NewAddon("Heimdall", "https://git.site.quack-lab.dev/dave/wow-Heimdall"),
NewAddon("Dechickenator", "https://git.site.quack-lab.dev/dave/wow_dechickenator"), "Dechickenator": NewAddon("Dechickenator", "https://git.site.quack-lab.dev/dave/wow_dechickenator"),
} }
func NewAddonService() *AddonService { func NewAddonService() *AddonService {
@@ -15,3 +17,42 @@ func NewAddonService() *AddonService {
Addons: addons, 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
}

22
main.go
View File

@@ -36,28 +36,6 @@ var addonService *AddonService
func main() { func main() {
addonService = NewAddonService() addonService = NewAddonService()
gamePath = filepath.Join("C:\\", "Games", "WoWRuski") 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() app := NewApp()
err := wails.Run(&options.App{ err := wails.Run(&options.App{