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