nix-openclaw-tools/internal/fs.go
2026-01-04 18:17:40 +01:00

40 lines
803 B
Go

package internal
import (
"fmt"
"os"
"regexp"
)
func ReplaceOnce(path string, re *regexp.Regexp, replace string) error {
data, err := os.ReadFile(path)
if err != nil {
return err
}
orig := string(data)
if !re.MatchString(orig) {
return fmt.Errorf("pattern not found in %s", path)
}
out := re.ReplaceAllString(orig, replace)
if out == orig {
return nil
}
return os.WriteFile(path, []byte(out), 0644)
}
func ReplaceOnceFunc(path string, re *regexp.Regexp, fn func(string) string) error {
data, err := os.ReadFile(path)
if err != nil {
return err
}
orig := string(data)
if !re.MatchString(orig) {
return fmt.Errorf("pattern not found in %s", path)
}
out := re.ReplaceAllStringFunc(orig, fn)
if out == orig {
return nil
}
return os.WriteFile(path, []byte(out), 0644)
}