in helper/files.go [176:224]
func TrimRightFile(path string, overwrite bool) error {
f, err := os.Open(path)
if err != nil {
logrus.Errorf("unable to open file %s\n%v", f, err)
}
defer f.Close()
tPath := path + ".tmp"
tf, err := os.OpenFile(tPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm)
if err != nil {
logrus.Error(err)
}
defer tf.Close()
scanner := bufio.NewScanner(f)
for scanner.Scan() {
tr := strings.TrimRight(scanner.Text(), " ")
if runtime.GOOS == "windows" {
// convert LF to CRLF
if _, err := tf.WriteString(tr + "\r\n"); err != nil {
logrus.Errorf("unable write trimmed string to temporary file\n%v", err)
return err
}
} else {
// convert CRLF to LF
if _, err := tf.WriteString(tr + "\n"); err != nil {
logrus.Errorf("unable write trimmed string to temporary file\n%v", err)
return err
}
}
}
if err := scanner.Err(); err != nil {
logrus.Errorf("unable to use scanner\n%v", err)
return err
}
if overwrite {
if err := CopyFileTo(tPath, path); err != nil {
logrus.Errorf("unable to replace original file with temporary\n%v", err)
return err
}
defer os.Remove(tPath)
}
return nil
}