github.com/saucelabs/saucectl@v0.175.1/internal/jsonio/file.go (about) 1 package jsonio 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "os" 7 ) 8 9 // WriteFile encodes v as JSON and saves it as a file at name. 10 func WriteFile(name string, v interface{}) error { 11 f, err := os.OpenFile(name, os.O_CREATE|os.O_WRONLY, 0755) 12 if err != nil { 13 return err 14 } 15 defer f.Close() 16 17 if err = json.NewEncoder(f).Encode(v); err != nil { 18 return err 19 } 20 21 // Explicit close to ensure that all bytes have been flushed. 22 if err := f.Close(); err != nil { 23 return fmt.Errorf("failed to close file stream when serializing '%v': %v", name, err) 24 } 25 26 return nil 27 }