generated from dave/wails-template
Implement displaying breaking changes
This commit is contained in:
15
addon.go
15
addon.go
@@ -74,14 +74,13 @@ func UpdateFile(localPath string, data []byte) (err error) {
|
||||
|
||||
return nil
|
||||
}
|
||||
func (a *Addon) Update(body []byte) (err error) {
|
||||
func (a *Addon) Update(body []byte) (hasBreakingChanges bool, err error) {
|
||||
log.Printf("Updating %s", a.Name)
|
||||
zipReader, err := zip.NewReader(bytes.NewReader(body), int64(len(body)))
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating zip reader: %w", err)
|
||||
return false, fmt.Errorf("error creating zip reader: %w", err)
|
||||
}
|
||||
log.Printf("Found %d files", len(zipReader.File))
|
||||
hasBreakingChanges := false
|
||||
for _, file := range zipReader.File {
|
||||
if file.FileInfo().IsDir() {
|
||||
continue
|
||||
@@ -89,11 +88,11 @@ func (a *Addon) Update(body []byte) (err error) {
|
||||
log.Printf("Found file %s", file.Name)
|
||||
fileHandle, err := file.Open()
|
||||
if err != nil {
|
||||
return fmt.Errorf("error opening file: %w", err)
|
||||
return false, fmt.Errorf("error opening file: %w", err)
|
||||
}
|
||||
fileData, err := io.ReadAll(fileHandle)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error reading file: %w", err)
|
||||
return false, fmt.Errorf("error reading file: %w", err)
|
||||
}
|
||||
|
||||
if strings.HasSuffix(file.Name, ".toc") {
|
||||
@@ -102,7 +101,7 @@ func (a *Addon) Update(body []byte) (err error) {
|
||||
if os.IsNotExist(err) {
|
||||
localToc = []byte{}
|
||||
} else {
|
||||
return fmt.Errorf("error reading local toc: %w", err)
|
||||
return false, fmt.Errorf("error reading local toc: %w", err)
|
||||
}
|
||||
}
|
||||
if a.HasBreakingChanges(string(localToc), string(fileData)) {
|
||||
@@ -115,13 +114,13 @@ func (a *Addon) Update(body []byte) (err error) {
|
||||
log.Printf("Updating file %s", localPath)
|
||||
err = UpdateFile(localPath, fileData)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error updating file: %w", err)
|
||||
return false, fmt.Errorf("error updating file: %w", err)
|
||||
}
|
||||
}
|
||||
if hasBreakingChanges {
|
||||
Warning.Printf("Has breaking changes")
|
||||
}
|
||||
return nil
|
||||
return hasBreakingChanges, nil
|
||||
}
|
||||
func (a *Addon) GetLocalTocPath() string {
|
||||
return filepath.Join(settings.GamePath, "Interface", "AddOns", a.Name, a.Name+".toc")
|
||||
|
@@ -36,18 +36,18 @@ func (a *AddonService) GetLocalVersion(name string) (string, error) {
|
||||
return addon.GetLocalVersion()
|
||||
}
|
||||
|
||||
func (a *AddonService) UpdateAddon(name string) (addon Addon, err error) {
|
||||
addon, err = a.GetAddon(name)
|
||||
func (a *AddonService) UpdateAddon(name string) (hasBreakingChanges bool, err error) {
|
||||
addon, err := a.GetAddon(name)
|
||||
if err != nil {
|
||||
return
|
||||
return false, err
|
||||
}
|
||||
release, err := addon.GetRemoteRelease()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = addon.Update(release)
|
||||
hasBreakingChanges, err = addon.Update(release)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return addon, nil
|
||||
return hasBreakingChanges, nil
|
||||
}
|
||||
|
6
app.go
6
app.go
@@ -76,9 +76,9 @@ func (a *App) GetAddonLocalVersion(name string) (res StringResponse) {
|
||||
return res
|
||||
}
|
||||
|
||||
func (a *App) UpdateAddon(name string) (res AddonResponse) {
|
||||
addon, err := addonService.UpdateAddon(name)
|
||||
res.Data = addon
|
||||
func (a *App) UpdateAddon(name string) (res BoolResponse) {
|
||||
hasBreakingChanges, err := addonService.UpdateAddon(name)
|
||||
res.Data = hasBreakingChanges
|
||||
if err != nil {
|
||||
res.Error = err.Error()
|
||||
}
|
||||
|
@@ -5,6 +5,8 @@
|
||||
let localVersion = "0.0.0";
|
||||
let remoteVersion = "0.0.0";
|
||||
let upToDate = true;
|
||||
let breakingChanges = false;
|
||||
let wasUpdated = false;
|
||||
GetAddonLocalVersion(addon.name).then((res) => {
|
||||
localVersion = res.data;
|
||||
});
|
||||
@@ -17,6 +19,9 @@
|
||||
const res = await UpdateAddon(addon.name);
|
||||
if (res.error) {
|
||||
console.error(res.error);
|
||||
} else {
|
||||
breakingChanges = res.data;
|
||||
wasUpdated = true;
|
||||
}
|
||||
GetAddonLocalVersion(addon.name).then((res) => {
|
||||
localVersion = res.data;
|
||||
|
@@ -12,7 +12,6 @@
|
||||
}
|
||||
});
|
||||
|
||||
let gamePath = "";
|
||||
let gamePathValid = false;
|
||||
IsGamePathValid().then((res) => {
|
||||
if (res.error) {
|
||||
|
2
frontend/wailsjs/go/main/App.d.ts
vendored
2
frontend/wailsjs/go/main/App.d.ts
vendored
@@ -20,4 +20,4 @@ export function SelectDirectory():Promise<main.StringResponse>;
|
||||
|
||||
export function SetGamePath(arg1:string):Promise<main.StringResponse>;
|
||||
|
||||
export function UpdateAddon(arg1:string):Promise<main.AddonResponse>;
|
||||
export function UpdateAddon(arg1:string):Promise<main.BoolResponse>;
|
||||
|
Reference in New Issue
Block a user