Skip to content

Commit 282752d

Browse files
grokifyclaude
andcommitted
refactor(os/osutil)!: simplify WriteFileReader and add perm parameter
BREAKING CHANGE: WriteFileReader signature changed from (filename, r) to (filename, r, perm) - Add os.FileMode parameter for explicit permission control - Replace bufio.Writer + ioutil.Write with simpler io.Copy - Remove panic on Close() error - now fails gracefully - Remove unused ioutil import Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 19b604d commit 282752d

File tree

1 file changed

+6
-14
lines changed

1 file changed

+6
-14
lines changed

os/osutil/write.go

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"os"
99

1010
"github.com/grokify/mogo/encoding/jsonutil"
11-
"github.com/grokify/mogo/io/ioutil"
1211
)
1312

1413
func WriteFileJSON(filepath string, data any, perm os.FileMode, prefix, indent string) error {
@@ -77,20 +76,13 @@ func (fw *FileWriter) Close() error {
7776
return fw.File.Close()
7877
}
7978

80-
func WriteFileReader(filename string, r io.Reader) error {
81-
// https://stackoverflow.com/questions/1821811/how-to-read-write-from-to-a-file-using-go
82-
// open output file
83-
// fo, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, perm)
84-
fo, err := os.Create(filename)
79+
func WriteFileReader(filename string, r io.Reader, perm os.FileMode) error {
80+
f, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, perm)
8581
if err != nil {
8682
return err
8783
}
88-
// close fo on exit and check for its returned error
89-
defer func() {
90-
if err := fo.Close(); err != nil {
91-
panic(err)
92-
}
93-
}()
94-
w := bufio.NewWriter(fo)
95-
return ioutil.Write(w, r)
84+
defer f.Close()
85+
86+
_, err = io.Copy(f, r)
87+
return err
9688
}

0 commit comments

Comments
 (0)