generated from dave/wails-template
Clean up names
This commit is contained in:
75
main.go
75
main.go
@@ -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
|
||||
|
Reference in New Issue
Block a user