From ffa413fe3c952b7e32c1ef500d41cb7eca0441a9 Mon Sep 17 00:00:00 2001 From: partisan Date: Fri, 9 May 2025 18:48:01 +0200 Subject: [PATCH] fixed "mozilla-release/obj-x86_64-pc-linux-gnu/dist/bin/browser/chrome/browser/content/browser/preferences/dialogs/addEngine.js" does not exist bug related to replace-all, I dont even want to know why is it doing that, jesus christ --- main.go | 27 +++++++++++++++++---------- replace-all.go | 19 ++++++++++++++----- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index 968d090..0620fd4 100755 --- a/main.go +++ b/main.go @@ -147,18 +147,25 @@ func applyPatch(patchPath, rootPath string) error { return fmt.Errorf("failed to read patch file: %v", err) } - if inputFilePath == "" && patchType != "new" { - return fmt.Errorf("patch file must specify input (i:) file") - } + if patchType != "replace-all" { + if inputFilePath == "" && patchType != "new" { + return fmt.Errorf("patch file must specify input (i:) file") + } - if outputFilePath == "" { - return fmt.Errorf("patch file must specify output (o:) file") - } + if outputFilePath == "" { + return fmt.Errorf("patch file must specify output (o:) file") + } - if patchType != "new" && patchType != "copy" && inputFilePath != outputFilePath { - err = os.Rename(inputFilePath, outputFilePath) - if err != nil { - return fmt.Errorf("failed to replace output file: %v", err) + // Only do this rename if it's not 'new' or 'copy' + if patchType != "new" && patchType != "copy" && inputFilePath != outputFilePath { + // Only rename if the input file actually exists + if _, err := os.Stat(inputFilePath); os.IsNotExist(err) { + return fmt.Errorf("input file does not exist: %s", inputFilePath) + } + err = os.Rename(inputFilePath, outputFilePath) + if err != nil { + return fmt.Errorf("failed to replace output file: %v", err) + } } } diff --git a/replace-all.go b/replace-all.go index 0af8d72..302192a 100644 --- a/replace-all.go +++ b/replace-all.go @@ -32,15 +32,24 @@ func applyReplaceAllPatch(rootPath string, modifications []string) error { if err != nil { return err } - if d.IsDir() { - // Skip patcher's own directory and subdirectories - if strings.HasPrefix(path, patcherDir) { + + // Skip patcher's own dir and subdirs + if strings.HasPrefix(path, patcherDir) { + if d.IsDir() { return fs.SkipDir } return nil } - // Skip patcher's own files - if strings.HasPrefix(path, patcherDir) { + + // Skip any obj-* folders inside mozilla-release + if strings.Contains(path, "mozilla-release/obj-") { + if d.IsDir() { + return fs.SkipDir + } + return nil + } + + if d.IsDir() { return nil }