Implement displaying breaking changes

This commit is contained in:
2025-01-11 23:40:57 +01:00
parent ba690091fb
commit d5d9819233
6 changed files with 21 additions and 18 deletions

View File

@@ -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")

View File

@@ -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
View File

@@ -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()
}

View File

@@ -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;

View File

@@ -12,7 +12,6 @@
}
});
let gamePath = "";
let gamePathValid = false;
IsGamePathValid().then((res) => {
if (res.error) {

View File

@@ -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>;