Clean up names

This commit is contained in:
2025-01-11 14:41:17 +01:00
parent 780808f628
commit 863098f3ce
4 changed files with 76 additions and 6 deletions

2
go.mod
View File

@@ -1,4 +1,4 @@
module wails-template
module wow-addon-manager
go 1.21

75
main.go
View File

@@ -5,8 +5,12 @@ import (
"fmt"
"io"
"log"
"net/http"
"net/url"
"os"
"path/filepath"
"regexp"
"strings"
"github.com/wailsapp/wails/v2"
"github.com/wailsapp/wails/v2/pkg/options"
@@ -29,6 +33,8 @@ func init() {
//go:embed all:frontend/dist
var assets embed.FS
var gamePath string
var versionRegex = regexp.MustCompile(`(\d+\.\d+\.\d+)`)
type Addon struct {
Name string
@@ -50,13 +56,76 @@ var addons = []*Addon{
NewAddon("Channeler", "https://git.site.quack-lab.dev/dave/wow_channeler"),
}
func (a *Addon) GetToc() *url.URL {
return a.URL.JoinPath(a.Name + ".toc")
func (a *Addon) GetRemoteToc() *url.URL {
return a.URL.JoinPath("raw", "branch", "master", a.Name+".toc")
}
func (a *Addon) GetLocalToc() string {
return filepath.Join(gamePath, "Interface", "AddOns", a.Name, a.Name+".toc")
}
func (a *Addon) GetRemoteVersion() (version string, err error) {
url := a.GetRemoteToc()
log.Printf("Fetching remote version from %s", url.String())
response, err := http.Get(url.String())
if err != nil {
log.Printf("error getting remote version: %s", err)
return "", err
}
if response.StatusCode != http.StatusOK {
log.Printf("error getting remote version: %s", response.Status)
return "", fmt.Errorf("error getting remote version: %s", response.Status)
}
defer response.Body.Close()
body, err := io.ReadAll(response.Body)
if err != nil {
log.Printf("error reading remote version: %s", err)
return "", err
}
log.Printf("Remote version: %s", string(body))
lines := strings.Split(string(body), "\n")
for _, line := range lines {
if strings.HasPrefix(line, "## Version") {
version := versionRegex.FindString(line)
log.Printf("remote version: %s", version)
return version, nil
}
}
return "", fmt.Errorf("no version found")
}
func (a *Addon) GetLocalVersion() string {
file, err := os.Open(a.GetLocalToc())
if err != nil {
log.Printf("error opening local toc: %s", err)
return ""
}
defer file.Close()
body, err := io.ReadAll(file)
if err != nil {
log.Printf("error reading local toc: %s", err)
return ""
}
lines := strings.Split(string(body), "\n")
for _, line := range lines {
if strings.HasPrefix(line, "## Version") {
version := strings.TrimSpace(strings.TrimPrefix(line, "## Version"))
log.Printf("local version: %s", version)
return version
}
}
return ""
}
func main() {
gamePath = filepath.Join("C:\\", "Games", "WoWRuski")
for _, addon := range addons {
log.Printf("%#v", addon.GetToc())
log.Printf("%#v", addon.GetLocalToc())
log.Printf("%#v", addon.GetRemoteToc())
remoteVersion, err := addon.GetRemoteVersion()
if err != nil {
log.Printf("error getting remote version: %s", err)
continue
}
log.Printf("%#v", remoteVersion)
log.Printf("%#v", addon.GetLocalVersion())
}
return
// Create an instance of the app structure

1
utils.go Normal file
View File

@@ -0,0 +1 @@
package main

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://wails.io/schemas/config.v2.json",
"name": "wails-template",
"outputfilename": "wails-template",
"name": "wow-addon-manager",
"outputfilename": "wow-addon-manager",
"frontend:install": "pnpm install",
"frontend:build": "pnpm build",
"frontend:dev:watcher": "pnpm dev",