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

This commit is contained in:
partisan 2025-05-09 18:48:01 +02:00
parent 3d08b492ac
commit ffa413fe3c
2 changed files with 31 additions and 15 deletions

27
main.go
View file

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

View file

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