github.com/safing/portbase@v0.19.5/utils/renameio/example_test.go (about)

     1  package renameio_test
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  
     7  	"github.com/safing/portbase/utils/renameio"
     8  )
     9  
    10  func ExampleTempFile_justone() { //nolint:testableexamples
    11  	persist := func(temperature float64) error {
    12  		t, err := renameio.TempFile("", "/srv/www/metrics.txt")
    13  		if err != nil {
    14  			return err
    15  		}
    16  		defer func() {
    17  			_ = t.Cleanup()
    18  		}()
    19  		if _, err := fmt.Fprintf(t, "temperature_degc %f\n", temperature); err != nil {
    20  			return err
    21  		}
    22  		return t.CloseAtomicallyReplace()
    23  	}
    24  	// Thanks to the write package, a webserver exposing /srv/www never
    25  	// serves an incomplete or missing file.
    26  	if err := persist(31.2); err != nil {
    27  		log.Fatal(err)
    28  	}
    29  }
    30  
    31  func ExampleTempFile_many() { //nolint:testableexamples
    32  	// Prepare for writing files to /srv/www, effectively caching calls to
    33  	// TempDir which TempFile would otherwise need to make.
    34  	dir := renameio.TempDir("/srv/www")
    35  	persist := func(temperature float64) error {
    36  		t, err := renameio.TempFile(dir, "/srv/www/metrics.txt")
    37  		if err != nil {
    38  			return err
    39  		}
    40  		defer func() {
    41  			_ = t.Cleanup()
    42  		}()
    43  		if _, err := fmt.Fprintf(t, "temperature_degc %f\n", temperature); err != nil {
    44  			return err
    45  		}
    46  		return t.CloseAtomicallyReplace()
    47  	}
    48  
    49  	// Imagine this was an endless loop, reading temperature sensor values.
    50  	// Thanks to the write package, a webserver exposing /srv/www never
    51  	// serves an incomplete or missing file.
    52  	for {
    53  		if err := persist(31.2); err != nil {
    54  			log.Fatal(err)
    55  		}
    56  	}
    57  }