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  }